zoukankan      html  css  js  c++  java
  • 剑指offer(10)—— 斐波那契数列以及跳台阶问题

    总结

    2^(n-1)可以用位移操作进行: 1<< (n-1)
    如果递归不好思考的话,可以找规律,代码很简单

    斐波那契数列(10)

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

    n<=39

    public class Solution {
        public int Fibonacci(int n) {
            // 先判断n必须在范围内取值
            if(n > 39 && n <= 0) return 0;
            // 为1直接返回
            if(n == 1) return 1;
            
            int a = 0;
            int b = 1;
            int result = 0;
            for(int i = 2;i<=n;i++){
                result = a + b;
                a = b;
                b = result;
            }    
            return result;       
        }
    }
    

    跳台阶(10)

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

    public class Solution {
        public int JumpFloor(int target) {
            if(target == 1) return 1;
            if(target == 2) return 2;
            int a = 1;
            int b = 2;
            int result = 0;
            for(int i = 3;i<=target;i++){
                result = a + b;
                a = b;
                b = result;
            }
            return result;
        }
    }
    

    变态跳台阶

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

    class Solution {
        public int JumpFloorII(int target) {
            if(target == 1) return 1;
            return (int)Math.pow(2,target-1);
        }
    }
    
    public class Solution {
        public int JumpFloorII(int target) {
            if(target == 1) return 1;
           // return (int)Math.pow(2,target-1);
            return 1<<(target -1);
        }
    }
    
  • 相关阅读:
    HBase的compact分析
    HBase Rowkey的散列与预分区设计
    Zookeeper 快速理解
    oozie 入门
    Apache Storm内部原理分析
    Java ArrayList源码剖析
    Java HashSet和HashMap源码剖析
    初步掌握Yarn的架构及原理
    UML用例图总结
    UML类图几种关系的总结
  • 原文地址:https://www.cnblogs.com/benjieqiang/p/11404019.html
Copyright © 2011-2022 走看看