买卖股票的最佳时机||
- 题目:
-
题解:
从数组的最前面开始遍历数组,利用双指针,当前面一个数字比后面一个数字小的时候,就让前面的数字进行购买,然后再从后面找一个最大的数字,把他比作卖出。更好理解的就是:如果把他比作为单调函数的话,一开始是单调递减的话,那么就当开始递增的那个点就肯定是最小的,那个点就购买,然后再递减了的那个点就是局部最大,所以那个点就卖出,这样两个点的差值就最大。
- 代码:
MyAnswer{
public int maxProfit(int[] prices) {
if(prices==null||prices.length<2){
return 0;
}
int sum =0, index=0,n=prices.length;
while(index<n){
//当一直递减就找到最小的值
while(index<n-1 && prices[index]>=prices[index+1]){
index++;
}
int min = prices[index];
//找到递增的最大值
while(index<n-1 && prices[index]<=prices[index+1]){
index++;
}
sum += prices[index++]-min;
}
return sum;
}
}