刷题计划(第6天)
时间:2022.4.23
题数:3
题目类型:动态规划
1.斐波那契数列
参考:[斐波那契数列第一题](剑指offer day1 - 掘金 (juejin.cn))
2. 青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
直接设置有多少种解法,然后参考前面的博客,写出状态转移方程。最后,注意题目要求
class Solution {
public:
int numWays(int n) {
int num[110]={1,1};
for(int i=2;i<=n;i++){
num[i]=num[i-1]+num[i-2];
num[i]%=1000000007;
}
return num[n];
}
};
3. 股票的最大利润
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
class Solution {
public:
int max(int a,int b){
return a>b?a:b;
}
int maxProfit(vector<int>& prices) {
if(prices.size()==0) return 0;
int res=0,min=prices[0];
for(int i=1;i<prices.size();i++){
if(prices[i]<min){
min=prices[i];
}else{
res=max(res,prices[i]-min);
}
}
return res;
}
};
总结
动态规划入门题,和上一个博客相同(动态规划入门(一) - 掘金 (juejin.cn))