给出一个数组,里面的值代表当日股价,你需要选定最佳的时间买入股票,之后卖出股票。以此来获得最佳利润
// Example 1:
// Input: [7, 1, 5, 3, 6, 4]
// Output: 5
// Example 2:
// Input: [7, 6, 4, 3, 1]
// Output: 0
public class Solution {
public int maxProfit(int[] prices) {
//Kadane's algorithm
if(prices.length == 0) return 0;
int max = 0;
int min = prices[0];
for(int i = 1; i < prices.length; i++) {
if(prices[i] > min) {
max = Math.max(max, prices[i] - min);
}
else {
min = prices[i];
}
}
return max;
}
}
核心思路:
设最小值为第一个,之后遍历后面每一个元素,比这个大则选为最大值,直至确认最大的最大值。