题解 | #买卖股票的最好时机(一)#

买卖股票的最好时机(一)

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)
全部评论

相关推荐

Edgestr:没项目地址就干脆把那一栏删了呗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务