zoukankan      html  css  js  c++  java
  • 9,斐波那契数列 6,旋转数组找最小 8青蛙跳台阶 JAVA实现

    9,斐波那契数列

    要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0),n<=39。

    思路:菲波那切数列:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*),就是后一个数字是前两个数字的和。所以for循环应该从2开始遍历到n

    public int FIBO(int n)
        {
            int a=1,b=a;
            int temp;
            if(n<=0)
                return 0;
            for(int i=2;i<n;i++)
            {
                temp=a;
                a=b;
                b=temp+b;
            }
            return b;
        }

    6.旋转数组中的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 

    1,

    思路:就是对一个有序数列,从中间拦腰斩断,前后颠倒位置,让他整体没有顺序。从这样一组数列中找最小数就直接依次遍历,

    • 当前一个数字比后一个数字大,说明原来数列是递增的,而当前的两个数字一个是原数列尾巴一个是原数列头,所以这个头就是我们要的最小数字。
    • 当遍历之后发现前一个数字都比后一个数字小,则说明现在这个数列是递增的,最小值就是第一个元素
    public int test1(int[] array)
        {
            if(array.length==0)
            {
                return 0;
            }
            for(int i=0;i<array.length-1;i++)
            {
            if(array[i]>array[i+1])
            {
                return array[i+1];
            }
            }
            return array[0];
            
            
        }

    2,,

    二分法

    public int test18(int[] array)
        {
            if(array.length==0)
                return 0;
            int l=0,r=array.length-1,mid=0;
            while(l<r)
            {
                mid=(r+l)/2;
                if(array[mid]>array[r])
                    l=mid+1;
                else
                    r=mid;
                
            }
            return array[l];
        }

    8.跳台阶

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

    思路:相当于是斐波那契数列的变式。关于为什么青蛙跳台阶可以认为是斐波那契数列,如下图显示,其中数字代表步数。

    递推式: [公式]

    public int test18(int n)
        {
            if(n<=0)
                return 0;
            if(n==0)
                return 1;
            int a=1,b=1,temp;
            for(int i=2;i<n;i++)
            {
                temp=a;
                a=b;
                b=temp+b;
            }
            return b;
            
            
        }
  • 相关阅读:
    'index.js' does not match the corresponding name on disk: '. ode_modules
    onload()方法只能在body标签中调用吗?怎么调用多个多个方法?
    HTML5新属性在Google浏览器中不能显示的问题
    HTML引入JS、CSS的各种方法
    框架、架构、设计模式的区别
    npm 命令 --save 和 --save-dev 的区别
    软件开发的权限控制和权限验证
    报错:Something is already running on port 8000.
    $stateProvider resovle 无法找到的原因
    git 统计代码量 shell脚本
  • 原文地址:https://www.cnblogs.com/lumc5/p/15094615.html
Copyright © 2011-2022 走看看