第六题
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length==0) return 0;
int ex=0;
for (int i : array) {
if(ex>i) return i;
ex=i;
}
return array[0];
}
}
运行时间:366ms
占用内存:28216k
思路:旋转数的特征就是只有一处逆序,从这一处分开的两个数组都是非递减的,所以只要判断旋转数的哪一个元素比前一个元素小,那它一定就是这个数组的最小数。
第七题
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
n<=39
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
import java.util.ArrayList;
public class Solution {
public int Fibonacci(int n) {
ArrayList<Integer> array=new ArrayList<>();
array.add(0);
array.add(1);
for(int i=2;i<=n;i++) {
array.add(array.get(i-1)+array.get(i-2));
}
return array.get(n);
}
}
运行时间:17ms
占用内存:8460k