import java.util.*; public class Solution { /** * * @param prices int整型一维数组 * @return int整型 */ public int maxProfit (int[] prices) { // write code here if (prices == null || prices.length == 0) return 0; // 记录扫描的最小价格 int minPrice = prices[0]; // 记录扫描过的最大利润 int maxPorfit = 0; for (int i = 1; i < prices.length; i++) { if (prices[i] < minPrice) { // 比前面还小,则把最小利润重置 minPrice = prices[i]; } else { // 计算第i天利润,求出这一天最大利润然后重置最大利润记录 maxPorfit = Math.max(maxPorfit, prices[i] - minPrice); } } return maxPorfit; } }
解题思想:扫描记录最小值及最大收益,不断遍历重置两个值