给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
这个问题的核心在于,做出一次买卖后,之前的都不要在管了,
因此,设计两个指针,一个指针指一次买卖中的最小值,一次指一个买卖中的最大值。
问题的核心就在于买卖如何分,实际上,买可以随时买,但卖一定是最高价卖。卖完这次交易就算结束了。/
class Solution {
public int maxProfit(int[] prices) {
if (prices.length<=1){
return 0;
}
int min = 0;
int max = 0;
int p =0;
while (max+1<prices.length){
if (prices[min]>prices[max]){
min = max;
max = max + 1;
continue;
}
if (prices[max]>prices[max+1]){
p = p + prices[max]-prices[min];
min = max+1;
max = max+1;
continue;
}
if (max+2==prices.length){
p=p+prices[max+1]-prices[min];
}
max = max+1;
}
return p ;
}
}
网友评论