LeetCode之Best Time to Buy and Sell Stock III

本文介绍了一种算法,用于计算给定股票价格数组中通过至多两次买卖获得的最大利润。该算法将数组分为两部分,分别计算每部分内的最大利润,并求这两部分利润之和的最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*由于最多存在两次交易,所以可以将数组分成两个子段,两个子段中分别做一次交易,
使得两侧交易之和最大即可。当在同一天进行了买入和卖出时,相当于不做交易,即整个
流程中只进行一次交易。用f[i]表示[0,i]中最大的值,g[i]表示[i,n-1]中交易最大的值。
那么结果即为max{f[i]+g[i]};
参考自:https://github.com/soulmachine/leetcode*/
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if(prices.size() < 2) return 0;
        vector<int> f(prices.size(), 0);
        vector<int> g(prices.size(), 0);
        int low(prices[0]);
        for(int i = 1; i < prices.size(); ++i){
            low = min(low, prices[i]);
            f[i] = max(f[i-1], prices[i] - low);
        }
        int high(prices[prices.size()-1]);
        for(int i = prices.size()-2; i >= 0; --i){
            high = max(high, prices[i]);
            g[i] = max(g[i+1], high - prices[i]);
        }
        int res(0);
        for(int i = 0; i < prices.size(); ++i){
            res = max(f[i]+g[i], res);
        }
        return res;
    }
};

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值