LeetCode 腾讯精选50题-- 买卖股票的最佳时机 II

Posted kaithy-rookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 腾讯精选50题-- 买卖股票的最佳时机 II相关的知识,希望对你有一定的参考价值。

贪心算法:

  具体的解题思路如下:

    II 的解题思路可以分为两部分,

      1. 找到数组中差值较大的两个元素,计算差值。

      2. 再步骤一最大的元素的之后,继续遍历,寻找差值最大的两个元素

    可以得出的是,遍历指针是一直向着数组的尾部移动的,由于要取得局部的最大差值,这一局部子数组中的元素一定是递增的,所以先找到递增结束的位置,那就是递增位置的起点,然后遍历至此轮递增结束时的位置,这样就得到了一个局部的最优解。

此思路由于指针只遍历一次,所以时间复杂度为O(N)。

以下是代码:

class Solution 
    public int maxProfit(int[] prices) 
        if(prices.length <=1)
            return 0;
        
        int i=0;
        int sum = 0;
        while (i<prices.length-1)
            while (i < prices.length-1 && prices[i+1] <= prices[i])
                i++; //找递增的起始位置
            
            sum -= prices[i];

            while (i < prices.length-1 && prices[i+1] >= prices[i])
                i++; //找递增的结束位置
            
            sum+= prices[i];
        

        return sum;
    

以上是关于LeetCode 腾讯精选50题-- 买卖股票的最佳时机 II的主要内容,如果未能解决你的问题,请参考以下文章

精选力扣500题 第12题 LeetCode 121. 买卖股票的最佳时机c++详细题解

leetcode腾讯精选练习(50 题)(持续更新)

LeetCode 腾讯精选50题--子集

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:子集

算法leetcode刷题 腾讯精选50题 一

LeetCode 122. 买卖股票的最优时机 II