题解 | #牛群买卖策略优化#

牛群买卖策略优化

https://www.nowcoder.com/practice/c8514318443a48218efde630ae11b4c3

知识点

贪心,模拟

思路

首先,我们知道牛在同一天买卖是没有意义的(因为利润为0)。所以我们只需要考虑隔天买卖的情况。

假设price数组的长度为n。假设对于i,有price[i~j]都为递增,那么只需要你在第i天买,第j天卖,即可获得最大利润(在中间买卖也没有意义,因为无利润)

所以我们只需要遍历price,对每一个i,寻找右侧最大的递增末位,不断更新ans即可,ans+=price[j]-price[i],然后把i赋值为j,因为这段区间[i~j]已经不需要再进行交易了,利润已经被榨干了。

代码c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int max_profitv2(vector<int>& prices) {
        // write code here
        int ans=0;
        int n=prices.size();
        for(int i=0;i<prices.size();i++)
        {
            
                int j=i;
                while(j+1<n&&prices[j]<prices[j+1])j++;//j+1的上界不能超过n

                ans+=(prices[j]-prices[i]);//更新利润
                i=j;//更新下一个区间的起点
            

        }
        return ans;
    }
};
全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
04-29 12:10
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务