题解 | #买卖股票的最好时机(一)#
买卖股票的最好时机(一)
https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param prices int整型一维数组
* @return int整型
*/
public int maxProfit (int[] prices) {
// write code here
if (prices.length < 2)
return 0;
int h = prices[0]; //高价
int l = prices[0]; //低价
int r = 0; //差价
for (int i = 0; i < prices.length; i++) {
h = h > prices[i] ? h : prices[i]; //更新高价
if (l > prices[i]) { //更新低价,同时重置前面的高价
l = prices[i];
h = prices[i];
}
r = r > h - l ? r : h -
l; //更新差价,出现新的低价的时候差价为0
}
return r;
}
}
一次遍历,不断更新最大利益,三个变量,真正的空间复杂度O(1),时间复杂度O(N)