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 };
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号