买卖股票最大收益
买卖股票的最好时机
http://www.nowcoder.com/questionTerminal/64b4262d4e6d4f6181cd45446a5821ec
假设你有一个数组,其中第 i 个元素是股票在第 i 天的价格。
你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。
/** * 买卖股票最大收益 * 假设你有一个数组,其中第 i 个元素是股票在第 i 天的价格。 * 你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。 * 解题思路: * 由于只有一次买卖机会,只有先买才能卖。我们首先需要设定最初的一个买入值,然后判断之后的卖出值与买入值之差。并且还需要去重新设置买入值 */ public int maxProfit (int[] prices) { // write code here if (prices.length < 2) return 0; int max = 0; //最大收益 int min = prices[0];//给定第一个数据为买入值 for (int i = 1; i < prices.length; i ++) { //从第二个值开始遍历 if (prices[i] - min > max) { //当第i个值与买入值之差大于当前的最大收益max时 max = prices[i] - min; //重新给最大收益max赋值 } if (prices[i] < min){ //判断第i个数是否比设置的买入初值小,小则代表当前的第i个数才是买入的最佳时刻。 min = prices[i]; //重新赋值最佳买入值 } } return max; }