news 2026/4/25 21:28:22

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/4/23 11:08:53

1w star!我们把Dooring零代码接入了AI,一句命令,自动生成页面

上期和大家分享了我们精心打磨的协同AI文档 JitWord&#xff1a; 最近也一直在研究可视化搭建 AI相关的技术实践, 花了一个月的时间&#xff0c;终于把Dooring零代码的AI模型跑通&#xff0c;我们可以直接用AI&#xff0c;生成符合Dooring可视化搭建平台规范的页面&#xff0c…

作者头像 李华
网站建设 2026/4/20 7:32:23

最新修复版 娱乐喝酒小程序源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 最新修复版 娱乐喝酒小程序源码 聚会娱乐类微信小程序&#xff0c;专为喝酒、聚会场景设计&#xff0c;集成了多种互动游戏和娱乐工具。 核心功能模块&#xff08;共9大功能&#xff0…

作者头像 李华
网站建设 2026/4/23 17:37:52

Waifu Diffusion终极指南:快速掌握动漫AI绘画技巧

Waifu Diffusion终极指南&#xff1a;快速掌握动漫AI绘画技巧 【免费下载链接】waifu-diffusion 项目地址: https://ai.gitcode.com/hf_mirrors/hakurei/waifu-diffusion Waifu Diffusion v1.4是一款基于稳定扩散技术的动漫风格图像生成模型&#xff0c;通过高质量动漫…

作者头像 李华
网站建设 2026/4/23 11:16:33

浏览器端P2P文件传输:WebRTC技术实现与应用解析

随着Web技术的快速发展&#xff0c;基于浏览器的P2P文件传输技术正成为传统云存储方案的重要补充。本文将从技术演进、核心实现、应用场景三个维度&#xff0c;深入解析这一前沿技术。 【免费下载链接】filepizza :pizza: Peer-to-peer file transfers in your browser 项目地…

作者头像 李华
网站建设 2026/4/23 16:13:59

qd-templates:100+网站自动化签到终极解决方案

在数字化生活日益普及的今天&#xff0c;我们每天需要登录的网站和App越来越多&#xff0c;从技术论坛到在线服务&#xff0c;从资源下载到游戏社区&#xff0c;手动签到不仅耗时耗力&#xff0c;还容易遗漏。qd-templates项目应运而生&#xff0c;为这一痛点提供了完美解决方案…

作者头像 李华
网站建设 2026/4/21 13:51:56

TVBoxOSC调试宝典:从问题诊断到实战精通的完整指南

掌握TVBoxOSC调试技巧&#xff0c;就像拥有了解决电视盒子问题的有效工具。无论是设备连接异常、界面卡顿还是功能失效&#xff0c;通过本文的深度解析&#xff0c;你都能快速定位并解决问题。 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库&#xff0c;用于…

作者头像 李华