最近刷LeetCode的时候碰到了这个错误:
代码如下:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res = 0;
int buy = prices[0];
if(prices.size()<1){
return 0;
}
for (int i = 1; i<prices.size(); i++) {
buy = min(buy, prices[i]);
res = max(res, prices[i] - buy);
}
return res;
}
};
后来参考了这个帖子,才知道这是个数组越界错误。错误很低级,只需要把特殊情况的if判断放在初始化之前即可。因为测试用例为[]时,对buy的赋值就会产生数组越界。
class Solution {
public:
int maxProfit(vector<int>& prices) {
//特殊情况
if(prices.size()<=1){
return 0;
}
int res = 0;
int buy = prices[0];
for (int i = 1; i<prices.size(); i++) {
buy = min(buy, prices[i]);
res = max(res, prices[i] - buy);
}
return res;
}
};