news 2026/6/23 7:20:01

leetcode 3652(定长滑动窗口/前缀和)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 3652(定长滑动窗口/前缀和)

3652: 按策略买卖股票的最佳时机

思路:定长滑动窗口 / 前缀和,枚举修改子数组 [i−k,i−1]

方法一:前缀和
计算两个前缀和数组:

  • 定义数组 c,其中 c[i]=prices[i]⋅strategy[i]。计算 c 的前缀和,记作 sum
  • 计算 prices 的前缀和,记作 sum_sell

如果不修改,答案为 sum[n]。

class Solution { public: long long maxProfit(vector<int>& prices, vector<int>& strategy, int k) { int n=prices.size(); vector<long long> sum(n+1),sum_sell(n+1); //前缀和 for(int i=0;i<n;i++){ sum[i+1]=sum[i]+prices[i]*strategy[i]; sum_sell[i+1]=sum_sell[i]+prices[i]; } long long ans=sum[n]; for(int i=k;i<=n;i++){ long long res=sum[i-k]+sum[n]-sum[i]+sum_sell[i]-sum_sell[i-k/2]; ans=max(ans,res); } return ans; } };

方法二:定长滑动窗口

设不修改时的利润为 total。修改后,利润(相比不修改)增加了 sum (可能<0)。所有窗口的 sum 的最大值为 maxSum。那么答案为 total+max(maxSum,0)。这里可能出现 maxSum<0 的情况,此时不修改更好,也就是与 0 取最大值。

对于价格 p,如果修改前策略是 x,修改后策略是 y,那么利润增加了 p⋅(y−x)。比如原来买入,现在持有(不买入),那么利润增加了 p⋅(0−(−1))=p。又比如原来买入,现在卖出,那么利润增加了 p⋅(1−(−1))=2p。

下面计算每个窗口的 sum,考察从 [i−k,i−1] 向右滑到 [i−k+1,i],sum 如何变化。

class Solution { public: long long maxProfit(vector<int>& prices, vector<int>& strategy, int k) { long long total=0,sum=0,max_sum=0; for(int i=0;i<prices.size();i++){ int p=prices[i],s=strategy[i]; total+=p*s; //入右半,交易策略从s变成1 sum+=p*(1-s); //2<= k <=prices.length,尚未形成第一个窗口 if(i<k-1){ if(i>=k/2-1) sum-=prices[i-k/2+1]; //形成初始窗口时的左半边元素 continue; } //更新 max_sum=max(max_sum,sum); //对于下一个窗口,下标为i-(k/2-1)的元素从右半移到左半,交易策略从 1 变成 0;下标为 i-k+1 的元素从左半离开窗口 sum-=prices[i-k/2+1]-prices[i-k+1]*strategy[i-k+1]; } return total+max_sum; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 20:32:03

广州 大模型备案与算法备案补贴政策解析

广州已形成 "市级统筹 区级实施" 的 AI 备案奖励体系&#xff0c;对完成国家级备案的企业提供一次性现金奖励 研发补贴 算力支持三重优惠&#xff0c;单个企业最高可获1000 万元级综合支持。 一、备案类型与适用范围 备案类型适用对象管理部门生成式 AI 备案 (大…

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

Python Wechaty:快速构建智能微信助手的终极指南

Python Wechaty&#xff1a;快速构建智能微信助手的终极指南 【免费下载链接】python-wechaty-getting-started Python Wechaty Starter Project Template that Works Out-of-the-Box 项目地址: https://gitcode.com/gh_mirrors/py/python-wechaty-getting-started 还在…

作者头像 李华
网站建设 2026/6/23 1:13:04

三大破局利器:重新定义古籍智能处理新范式

三大破局利器&#xff1a;重新定义古籍智能处理新范式 【免费下载链接】SikuBERT-for-digital-humanities-and-classical-Chinese-information-processing SikuBERT&#xff1a;四库全书的预训练语言模型&#xff08;四库BERT&#xff09; Pre-training Model of Siku Quanshu …

作者头像 李华
网站建设 2026/6/23 16:00:25

【Java毕设全套源码+文档】基于springboot的房屋出售租赁系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/22 16:28:26

NeurIPS 2025!阿里开源 UniEdit:首个大型开放域大模型知识编辑基准

随着大语言模型&#xff08;LLM&#xff09;的广泛应用&#xff0c;它们在医疗、金融、教育等关键行业扮演着愈发重要的角色。然而&#xff0c;一个被忽视的现实是&#xff1a;大模型的知识并不会自动更新&#xff0c;更不总是准确。当模型输出过时信息、错误事实甚至自信满满的…

作者头像 李华
网站建设 2026/6/23 7:59:57

SeaTunnel Web终极指南:可视化数据集成平台完整解析

SeaTunnel Web终极指南&#xff1a;可视化数据集成平台完整解析 【免费下载链接】seatunnel-web SeaTunnel is a distributed, high-performance data integration platform for the synchronization and transformation of massive data (offline & real-time). 项目地址…

作者头像 李华