Day 8 胜利属于达瓦里氏!
题目1 剑指 Offer 10- I. 斐波那契数列
题目2 剑指 Offer 10- II. 青蛙跳台阶问题
题目3.剑指 Offer 63. 股票的最大利润
1 . 剑指 Offer 10- I. 斐波那契数列
我知道这一定是我DP梦开始的地方
这题用的滚动数组优化 dp表会会直接爆int
class Solution {
public:
int temp = 1e9 +7;
int fib(int n) {
if(n == 0 || n == 1) return n;
int a = 1 , b = 0;
for(int i = 1; i < n ; i ++ ){
a = a + b;
b = a - b;
a %= temp;
}
return a;
}
};
2. 剑指 Offer 10- II. 青蛙跳台阶问题
同上只是数发生了一些变化
class Solution {
public:
const int temp = 1e9 + 7;
int numWays(int n) {
if(n == 0 || n == 1) return 1;
int a = 1 , b = 1;
for(int i = 1; i < n; i ++ ){
a = a + b;
b = a - b;
a %= temp;
}
return a;
}
};
3 .剑指 Offer 63. 股票的最大利润
想法有一点抽象 min 表示截至指针指向之前的最小值
max 不断的用min去更新 思路不好想 之前没做过类似的做不出来
class Solution {
public:
int maxProfit(vector<int>& prices) {
int min = INT_MAX;
int max1 = 0;
for(auto x : prices){
if(x < min) min = x;
else max1 = max(max1 , x - min);
}
return max1;
}
};