day7

1.剑指 Offer 10- I. 斐波那契数列

 1 class Solution {
 2 public:
 3     int fib(int n) {
 4       if(n <= 1) return n;
 5       int p = 0,q = 1,t;
 6       for(int i = 2;i <= n;i ++){
 7         t = (p + q) % 1000000007;
 8         p = q;
 9         q = t;
10       }
11       return t;
12     }
13 };

 还可以用递归法和动态规划

2.剑指 Offer 10- II. 青蛙跳台阶问题

 1 class Solution {
 2 public:
 3     int dp[101];
 4     int numWays(int n) {
 5       dp[0] = 1,dp[1] = 1,dp[2] = 2;
 6       for(int i = 3;i <= n;i ++)
 7           dp[i] = ((dp[i - 1] % 1000000007) + (dp[i - 2] % 1000000007)) % 1000000007;
 8       return dp[n];
 9     }
10 };

 还可用递归和滚动法

3.剑指 Offer 63. 股票的最大利润

 1 class Solution {
 2 public:
 3     int dp[100001];
 4     int maxProfit(vector<int>& prices) {
 5       int n = prices.size();
 6       if(n == 0) return 0;
 7       dp[0] = 0;
 8       int cost = prices[0];
 9       for(int i = 1;i < n;i ++){
10         dp[i] = max(dp[i - 1],prices[i] - cost);
11         if(prices[i] < cost)
12          cost = prices[i];
13       }
14       return dp[n - 1];
15     }
16 };

 

posted @ 2022-07-01 23:11  balabalahhh  阅读(30)  评论(0)    收藏  举报