news 2026/6/10 16:25:32

leetcode 3652. 按策略买卖股票的最佳时机 中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 3652. 按策略买卖股票的最佳时机 中等

给你两个整数数组pricesstrategy,其中:

  • prices[i]表示第i天某股票的价格。
  • strategy[i]表示第i天的交易策略,其中:
    • -1表示买入一单位股票。
    • 0表示持有股票。
    • 1表示卖出一单位股票。

同时给你一个偶数整数k,你可以对strategy进行最多一次修改。一次修改包括:

  • 选择strategy中恰好k连续元素。
  • 将前k / 2个元素设为0(持有)。
  • 将后k / 2个元素设为1(卖出)。

利润定义为所有天数中strategy[i] * prices[i]总和

返回你可以获得的最大可能利润。

注意:没有预算或股票持有数量的限制,因此所有买入和卖出操作均可行,无需考虑过去的操作。

示例 1:

输入:prices = [4,2,8], strategy = [-1,0,1], k = 2

输出:10

解释:

修改策略利润计算利润
原始[-1, 0, 1](-1 × 4) + (0 × 2) + (1 × 8) = -4 + 0 + 84
修改 [0, 1][0, 1, 1](0 × 4) + (1 × 2) + (1 × 8) = 0 + 2 + 810
修改 [1, 2][-1, 0, 1](-1 × 4) + (0 × 2) + (1 × 8) = -4 + 0 + 84

因此,最大可能利润是 10,通过修改子数组[0, 1]实现。

示例 2:

输入:prices = [5,4,3], strategy = [1,1,0], k = 2

输出:9

解释:

修改策略利润计算利润
原始[1, 1, 0](1 × 5) + (1 × 4) + (0 × 3) = 5 + 4 + 09
修改 [0, 1][0, 1, 0](0 × 5) + (1 × 4) + (0 × 3) = 0 + 4 + 04
修改 [1, 2][1, 0, 1](1 × 5) + (0 × 4) + (1 × 3) = 5 + 0 + 38

因此,最大可能利润是 9,无需任何修改即可达成。

提示:

  • 2 <= prices.length == strategy.length <= 10^5
  • 1 <= prices[i] <= 10^5
  • -1 <= strategy[i] <= 1
  • 2 <= k <= prices.length
  • k是偶数

分析:前缀和 + 定长滑动窗口。

需要计算两个前缀和数组:第一个 pre_sum 数组记录从第 1 天到第 x 天的初始利润,第二个 sell 数组记录从第 1 天到第 x 天每天都卖出股票的利润。

滑动窗口大小为 k。最初这个窗口的左端点在第 1 天,右端点在第 k 天,对应数组下标 [0,k)。用计算的总初始利润,先减去这 k 天的初始利润,再加上第 (1+k)/2 天到第 k 天每天都卖出股票的利润,就是修改策略的利润。之后这个窗口每次向右滑动一天,直到最后一天,答案保留利润的最大值。

long long maxProfit(int* prices, int pricesSize, int* strategy, int strategySize, int k) { long long pre_sum[pricesSize+5],sell[pricesSize+5],ans=0,suml=0,sumr=0; sell[0]=prices[0],pre_sum[0]=prices[0]*strategy[0]; for(int i=1;i<pricesSize;++i) sell[i]=sell[i-1]+prices[i],pre_sum[i]=pre_sum[i-1]+strategy[i]*prices[i]; ans=pre_sum[pricesSize-1]; for(int l=0,r=k;r<=pricesSize;++l,++r) { int mid=(l+r)/2; long long add=sell[r-1]-sell[mid-1],sub=pre_sum[r-1]-pre_sum[l]+prices[l]*strategy[l]; ans=fmax(ans,pre_sum[pricesSize-1]-sub+add); } return ans; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 21:38:59

UI-TARS桌面版终极指南:从新手到高手的智能操作技巧

UI-TARS桌面版终极指南&#xff1a;从新手到高手的智能操作技巧 【免费下载链接】UI-TARS-desktop A GUI Agent application based on UI-TARS(Vision-Lanuage Model) that allows you to control your computer using natural language. 项目地址: https://gitcode.com/GitH…

作者头像 李华
网站建设 2026/6/10 0:34:09

STM32_I2C Timing参数计算方法(I2C speed:120k/240k/400k)

文章目录I2C Timing参数计算方法1. 获取必要参数2. 使用STM32CubeMX配置工具方法一&#xff1a;STM32CubeMX图形界面方法二&#xff1a;使用ST官方Excel工具3. 手动计算TIMINGR值4. 示例计算过程5. 实际应用建议6. 验证方法I2C Timing参数计算方法 1. 获取必要参数 首先需要确…

作者头像 李华
网站建设 2026/6/10 14:25:49

广告优化 + 产品页打磨 - DeepBI 让工厂卖家亚马逊广告数据翻倍

作为跨境电商领域的典型工厂卖家&#xff0c;其核心优势在于自有生产与供应链能力&#xff0c;产品性价比突出&#xff0c;深耕垂直类目且注重长期运营&#xff0c;但在广告投放等精细化运营环节存在专业资源不足、效率偏低的问题。该卖家经朋友推荐了解到DeepBI&#xff0c;因…

作者头像 李华
网站建设 2026/6/10 20:30:39

企业级实战:Windows Server部署Docker全指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Windows Server Docker部署检查清单工具&#xff0c;功能包括&#xff1a;1.系统需求验证模块&#xff1b;2.域环境兼容性检测&#xff1b;3.权限配置向导&#xff1b;4.网…

作者头像 李华
网站建设 2026/6/10 21:13:47

突破性技术实战:浏览器直连文件传输的完整指南

还在为云盘限速而烦恼&#xff1f;还在担心敏感文件被第三方存储&#xff1f;浏览器P2P文件传输技术正在重新定义文件分享方式。这项革命性的技术让文件传输变得前所未有的简单高效&#xff0c;彻底告别传统传输方式的种种限制。 【免费下载链接】filepizza :pizza: Peer-to-pe…

作者头像 李华