C*******n 发帖数: 193 | 1 class Solution {
public:
int maxProfit(vector &prices) {
int max = 0;
if (prices.size() <2) {return 0;}
int i,j=0;
vector minV(prices.size(),0);
minV[0] = prices[0];
for(j=1;j
{
if ((prices[j] - minV[j-1] ) > max){
max = (prices[j] - minV[j-1] );
}
if(prices[j] > prices[j-1]) {
minV[j] = prices[j-1];
} else {
minV[j] = prices[j];
}
}
return max;
}
};
i got this from LC.com
Submission Result: Wrong Answer
Input: [1,2]
Output: 0
Expected: 1
But on my computer it is 1 as return value.
confused.
求大神 | f*******w 发帖数: 1243 | 2 你这code问题太多了,你确定自己调试没问题?
1. 为什么 j < prices.size() - 1?
2. 为什么需要minV这个array,一个值不就完了?
3. 为什么minV[j]只和prices[j-1]比,而不是和minV[j-1]比? | f*******w 发帖数: 1243 | 3 class Solution {
public:
int maxProfit(vector &prices) {
if (prices.size() < 1) return 0;
int curr_min = prices[0], curr_profit = 0;
for (size_t i = 1; i < prices.size(); ++i) {
curr_profit = max(curr_profit, prices[i] - curr_min);
curr_min = min(curr_min, prices[i]);
}
return curr_profit;
}
}; | C*******n 发帖数: 193 | |
|