剑指offer6-10

6.'''
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
'''
function minNumberInRotateArray(rotateArray){
	if(rotateArray.length == 0){
		return 0
	}
	var it = null
	rotateArray.forEach((item,i) => {
		if(item<rotateArray[i-1]){
			it = item
		}
	})
	return it
}
var re = minNumberInRotateArray([4,5,6,2,3])
console.log(re)
7./**
斐波那契数列
0 1 2 3 4 5 6 7
0 1 1 2 3 5 8 13 ...
n∈[0,39]
输出第n项(从0开始,第0项为0)。
**/
function Fibonacci(n){
	var ans = [];
	ans[0] = 0;
	ans[1] = 1; 
	for(let i =2;i<40;i++){
		ans[i] = ans[i-1]+ans[i-2];
	}
	return ans[n]   
}
re = Fibonacci(6)
console.log(re)
8/**
'''
一只青蛙一次可以跳上1级台阶,也可以跳上2级。
求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
'''
**/
function jumpFloor(number){
	if(number<3){
		return number;
	}else{
		var ans = [];
		ans[0] = 0;
		ans[1] = 1;
		ans[2] = 2;
		for(let i = 3;i<number+1;i++){
			ans[i] = ans[i-1]+ans[i-2];
		}
		return ans[number];
	} 
}
re = jumpFloor(5);
console.log(re);
9/**
'''
一只青蛙一次可以跳上1级台阶,
也可以跳上2级……它也可以跳上n级。
求该青蛙跳上一个n级的台阶总共有多少种跳法。
'''
**/
function jumpFloorII(number){
	var n=1;
	for(let i=2;i<number+1;i++){
		n=2*n;
	}
	return n
}
re=jumpFloorII(5);
console.log(re);
10/**
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。
请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
**/
function rectCover(number){
	if (number<=2){
		return number
	}
	var a = [];
	a[1]=1;
	a[2]=2;
	for(let i=3;i<number+1;i++){
		a[i]=a[i-1]+a[i-2];
	}
	return a[number];
}
var re = rectCover(6);
console.log(re);