开干,每天一刷
func fib(n int) int {
f0, f1 := 0, 1
for i := 0; i < n; i++ {
f0, f1 = f1, (f0+f1)%1000000007
}
return f0
}
这道题也没什么难度,一是取模要注意一下,二是如果使用递归的话,实际上会超时,我就超时了,下面这种写法不合适
func fib1(n int) int {
// 实现一个数列
if n == 0 {
return 0
}
if n == 1 {
return 1
}
return (fib(n-1) + fib(n-2)) % 1000000007
}
我本来不会这一题的,但是我发现这两题题号一样,所以考察的是同一个知识点,也就是飞博,但是7步台阶明显是第八个飞博,那么我返回f1就是了
func numWays(n int) int {
f0, f1 := 0, 1
for i := 0; i < n; i++ {
f0, f1 = f1, (f0+f1)%1000000007
}
return f1
}
果然过了^_^,笑死我了
没整明白题目啊,大概就是告诉我们两个分开的数组段是有序的,首先来个力大砖飞版本
func minArray(numbers []int) int {
sort.Ints(numbers)
return numbers[0]
}
一眼过,题解说有用二分法的,我试试看,两个分开的数组段都是有序的就好写
func minArray(numbers []int) int {
left :=0
right :=len(numbers)-1
for left<right{
mid :=left+(right-left)>>1
if numbers[mid]>numbers[right]{
left = mid+1
}else if numbers[mid]<=numbers[right] {
right = right-1
}
}
return numbers[left]
}