【算法题】买卖股票的最好时机(一)

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

https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec?tpId=196&tqId=37051&rp=1&sourceUrl=%2Fexam%2Foj%3FquestionJobId%3D10%26subTabName%3Donline_coding_page&difficulty=undefined&judgeStatus=undefined&tags=&title=

买卖股票的题大概有 6 道,可以使用动态规划全部解决,但这题是最简单的一道,如果使用动态规划,有点杀鸡用牛刀了,没必要。

这题说的是只能交易一次,求所获得的最大利润,也就是在最低价的时候买入,在后面最高价的时候卖出,我们可以使用一个变量 minV 来记录前面遍历过的最小值,这个最小值不是固定的,也是会跟着变动的,然后用数组后面的值减去这个最小值差,这个差就是利润,我们只需要保存最大利润即可。

    public int maxProfit(int[] prices) {
        int minV = prices[0];// 遍历过的最小值
        int ans = 0;
        for (int price : prices) {
            minV = Math.min(minV, price);// 记录最小值
            ans = Math.max(ans, price - minV);// 记录差值的最大值
        }
        return ans;
    }

public:
    int maxProfit(vector<int> &prices) {
        int minV = prices[0];// 遍历过的最小值
        int ans = 0;
        for (int price: prices) {
            minV = min(minV, price);// 记录最小值
            ans = max(ans, price - minV);// 记录差值的最大值
        }
        return ans;
    }

各大厂算法面试题已经整理好了,请看这里:《算法专栏》

#笔试#

为了应对春招和秋招找工作,我经过长时间的收集和整理了各大厂的算法面试题,所有的算法题我都已经做了实现,大家可以根据自己需要面试的大厂选择练习即可。适宜人群: 在校生、社招求职者及自学者。

全部评论

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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