门户型网站,centos 7.3 wordpress,免费制作短视频软件,贸易网站建设方案剑指 Offer 10 - I、II 斐波那契数列、青蛙跳台阶问题 63. 股票的最大利润
题目描述#xff1a; [I] 斐波那契数列由 0 和 1 开始#xff0c;之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e97#xff08;1000000007#xff09;#xff0c;如计算初始结果为…剑指 Offer 10 - I、II 斐波那契数列、青蛙跳台阶问题 63. 股票的最大利润
题目描述 [I] 斐波那契数列由 0 和 1 开始之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e971000000007如计算初始结果为1000000008请返回 1。 [II] 一只青蛙一次可以跳上1级台阶也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e971000000007如计算初始结果为1000000008请返回 1。 [63] 假设把某股票的价格按照时间先后顺序存储在数组中请问买卖该股票一次可能获得的最大利润是多少 考察重点三道题目均考察简单的动态规划。第二题虽然题目描述复杂青但是蛙跳台阶只可能是从n-1阶跳一次或n-2阶跳两次。即f(n)f(n-1)f(n-2即依然是斐波那契数列问题。
第一题
func fib(n int) int {if n 0{return 0}mod : 1000000007a, b, c : 0, 1, 1for i : 2;i n;i {c (ab)%moda bb c}return c
}第二题
func numWays(n int) int {if n 0 {return 1}a, b, c : 0, 1, 1for n 1 {a bb cc (a b) % 1000000007n--}return c
}第三题
func maxProfit(prices []int) int {maxPrice : 0for i : 1;i len(prices);i {nowPrice : prices[i] - prices[i - 1]maxPrice max(maxPrice, nowPrice)if prices[i] prices[i - 1]{prices[i] prices[i-1]}}return maxPrice
}func max(a, b int)int{if a b{return a}return b
}