出现的bugs:
(1)由两个if的来计算序列的值,讨论了>和<而忽略的=的情况,结果对应的值被默认初始化
(2)引用初始化。在两个函数里的两个参数引用初始化了同一个vector,结果是第二个引用参数由于iterator的更改而全部失效,也就是说所有的结果都恢复到了初始化的状态。
思维的卡壳:
(1)计算逆序的最大值时出错
class Solution {
public:
vectormaxlr(vector &prices) {
vector res(prices.size());
if(prices.size()==0) return res;
int min=prices[0];
res[0]=0;
int maxp=0;
for(int i=1;
imin){
maxp=max(maxp,prices[i]-min);
res[i]=maxp;
}
}
return res;
}
vectormaxrl(vector &prices) {
vector res(prices.size());
if(prices.size()==0) return res;
int maxv=prices.back();
res.back()=0;
int maxp=0;
for(int i=prices.size()-2;
i>=0;
--i){
if(prices[i]>=maxv) {res[i]=res[i+1];
maxv=prices[i];
}
if(prices[i] &prices) {
if(prices.size()==0) return 0;
vector lr= maxlr(prices);
//cout< rl= maxrl(prices);
//cout<
容易理解的暴力法如下:
class Solution {
public:
int maxp(vector &prices,int beg,int end) {
if(prices.size()==0) return 0;
int min=INT_MAX;
int maxp=0;
for(int i=beg ;
imin){
maxp=max(maxp,prices[i]-min);
}
}
return maxp;
}
int maxProfit(vector &prices) {
if(prices.size()==0) return 0;
int maxv=maxp(prices,0,prices.size());
for(int i=2;
i【Best Time to Buy and Sell Stock III(最多出手两次的多大获利)】maxv) maxv=tmp;
}
return maxv;
}
};
推荐阅读
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 【LeetCode】28.实现strstr() (KMP超详细讲解,sunday解法等五种方法,java实现)
- LeetCode-35-搜索插入位置-C语言
- leetcode python28.实现strStr()35. 搜索插入位置
- Leetcode Permutation I & II
- python|leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
- LeetCode 28 Implement strStr() (C,C++,Java,Python)
- Python|Python Leetcode(665.非递减数列)