大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

n<=39

  1. public class Solution {
  2. public int Fibonacci(int n) {
  3. int a=1,b=1,c=0;
  4. if(n<0){
  5. return 0;
  6. }else if(n==1||n==2){
  7. return 1;
  8. }else{
  9. for (int i=3;i<=n;i++){
  10. c=a+b;
  11. b=a;
  12. a=c;
  13. }
  14. return c;
  15. }
  16. }
  17. }
  1. public class Solution {
  2. public int Fibonacci(int n) {
  3. if(n==0)
  4. return 0;
  5. else if(n==1)
  6. return 1;
  7. else
  8. return Fibonacci(n-1)+Fibonacci(n-2);
  9. }
  10. }

  递归比循环简单,但时间消耗更大,递归不断调用函数,需求大。

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

  依旧是斐波那契,如题可知,每次1或者2级台阶,假设最后一次跳了1阶台阶,剩下的就是跳了n-1此台阶的跳法,如果最后跳了2级台阶,那就是剩下n-2台阶的跳法,也就是n级台阶等于n-1+n-2两种台阶跳法的总和。

  1. public class Solution {
  2. public int JumpFloor(int target) {
  3. if(target <= 0) return 0;
  4. if(target == 1) return 1;
  5. if(target == 2) return 2;
  6. int one = 1;
  7. int two = 2;
  8. int result = 0;
  9. for(int i = 2; i < target; i++){
  10. result = one+ two;
  11. one = two;
  12. two = result;
  13. }
  14. return result;
  15. }
  16. }

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

  同上,只不过改成了加起来所有的,可以留一个数组来保存。

  1. public class Solution {
  2. public int JumpFloorII(int n) {
  3. int [] ans = new int [n+1];
  4. if(n==0)
  5. return 0;
  6. ans[0]=1;ans[1]=1;
  7. for(int i=2;i<=n;i++)
  8. {
  9. ans[i]=0;
  10. for(int j=0;j<i;j++)
  11. {
  12. ans[i]+=ans[j];
  13. }
  14. }
  15. return ans[n];
  16. }
  17. }

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

  1. public class Solution {
  2. public int RectCover(int target) {
  3. if(target==0){
  4. return 0;
  5. }
  6. else if(target==1)
  7. {
  8. return 1;
  9. }
  10. else if(target==2){
  11. return 2;
  12. }else{
  13. return RectCover(target-1)+RectCover(target-2);
  14. }
  15. }
  16. }

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

  1. public class Solution {
  2. public ListNode deleteDuplication(ListNode pHead)
  3. {
  4. if(pHead !=null && pHead.next == null){
  5. return pHead;
  6. }
  7. ListNode preNode =null;
  8. ListNode node = pHead;
  9. while(node != null){
  10. if(node.next !=null && node.val == node.next.val){
  11. while(node.next != null && node.next.val == node.val){
  12. node = node.next;
  13. }
  14. if(preNode == null){
  15. pHead = node.next;
  16. }else{
  17. preNode.next = node.next;
  18. }
  19. }else{
  20. preNode = node;
  21. }
  22. node = node.next;
  23. }
  24. return pHead;
  25. }
  26. }

剑指offer_2.3_Day_6的更多相关文章

  1. 剑指offer_2.1_Day_5

    输入一个链表,按链表从尾到头的顺序返回一个ArrayList. import java.util.ArrayList; public class Solution { public ArrayList ...

  2. 剑指Offer面试题:1.实现Singleton模式

    说来惭愧,自己在毕业之前就该好好看看<剑指Offer>这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及.但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实 ...

  3. 剑指Offer面试题:14.链表的倒数第k个节点

    PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善. 一.题目:链表的倒数第k个节点 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯,本题 ...

  4. 《剑指offer》面试题12:打印1到最大的n位数

    面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...

  5. 《剑指offer》面试题11: 数值的整数次方

    面试题11: 数值的整数次方 剑指offer面试题11,题目如下 实现函数double power(double base,int exponent),求base的exponent次方, 不得使用库 ...

  6. 剑指 Offer 题目汇总索引

    剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格              ...

  7. 面试题目——《剑指Offer》

    1.把一个字符串转换成整数——<剑指Offer>P29 2.求链表中的倒数第k个结点——<剑指Offer>P30 3.实现Singleton模式——<剑指Offer> ...

  8. 剑指offer习题集2

    1.把数组排成最小的数 class Solution { public: static bool compare(const string& s1, const string& s2) ...

  9. 剑指offer习题集1

    1.打印二叉树 程序很简单,但是其中犯了一个小错误,死活找不到,写代码要注意啊 这里左右子树,要注意是node->left,结果写成root->left vector<int> ...

随机推荐

  1. Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()

    一.函数的返回值 return return: 自定义返回值,返回到哪里? 返回到函数的[调用处]1.return 后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return ...

  2. Py西游攻关之基础数据类型(五)-集合

    Py西游攻关之基础数据类型 - Yuan先生 https://www.cnblogs.com/yuanchenqi/articles/5782764.html 八 集合(set) 集合是一个无序的,不 ...

  3. Js为Dom元素绑定事件须知

    为异步加载的Dom 元素绑定事件必须在加载完成之后绑定: $('body').load('LearnClickBinding.ashx');$('a').click(function () { ale ...

  4. 吴裕雄--天生自然JAVAIO操作学习笔记:投票程序

    public class ExecDemo{ public static void main(String args[]){ new Operate() ; } }; import java.io.B ...

  5. Linux centosVMware Vim介绍、vim颜色显示和移动光标、vim一般模式下移动光标、vim一般模式下复制、剪切和粘贴

    一.Vim介绍 vim 是一款功能强大的文本编辑器,是vi的升级版,带有颜色显示, 默认有三种模式:一般模式, 命令模式,  编辑模式   安装Vim [root@davery ~]# vim /et ...

  6. d3基本图形

                                             柱状图                                   散点图.气泡图               ...

  7. NSArary自定义对象排序 NSComparator, compare

    reference from :http://mobile.51cto.com/hot-434804.htm 1.构建Person类 Person.h @interface Person : NSOb ...

  8. linux问题故障

    分析问题的方法论 What-现象是什么样的 When-什么时候发生 Why-为什么会发生 Where-哪个地方发生的问 How much-耗费了多少资源 How to do-怎么解决问题 4. cpu ...

  9. 南邮CG-CTF Web记录

    MYSQL(利用精度,传参为小数) robots.txt中的代码: <?php if($_GET[id]) { mysql_connect(SAE_MYSQL_HOST_M . ':' . SA ...

  10. java环境变量修改后不生效

    修改java环境变量后,cmd查看java版本,还是之前的版本,需要做以下处理: 1. 删除C:\Windows\System32目录下的相关的java.exe.javaw.exe.javaws.ex ...