news 2026/3/22 18:52:31

第 173 场双周赛Q3——3796. 找到带限制序列的最大值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第 173 场双周赛Q3——3796. 找到带限制序列的最大值

题目链接:3796. 找到带限制序列的最大值(中等)

算法原理:

解法:双向约束传递

10ms击败54.10%

时间复杂度O(N)

①初始化约束数组:创建数组maxA记录每个位置的最大可行值,初始设为极大值(表示无约束),并固定a[0]=0
②应用硬限制:将restrictions中指定位置idx的最大允许值直接赋值给maxA[idx],优先满足显式位置限制
③左到右约束传递:遍历序列(从 1 到 n-1),确保每个位置i满足 a[i] ≤ a[i-1] + diff[i-1],取maxA[i]与该约束值的较小值更新maxA[i](保证不违反左到右的差值约束)
④右到左约束传递:反向遍历序列(从 n-2 到 0),确保每个位置i满足 a[i] ≤ a[i+1] + diff[i],同样取较小值更新maxA[i](保证不违反右到左的差值约束)
⑤计算最终结果:遍历maxA数组,取所有值中的最大值(且保证非负),转为 int 返回

Java代码:

class Solution { public int findMaxVal(int n, int[][] restrictions, int[] diff) { //初始化每个位置的最大可能值为极大值 long[] maxA=new long[n]; Arrays.fill(maxA,Long.MAX_VALUE); //初始条件:a[0]=0; maxA[0]=0; //应用限制条件:restrictions中的位置idx不能超过maxVal for(int[] r:restrictions){ int idx=r[0]; int maxVal=r[1]; maxA[idx]=maxVal; } //从左到右遍历:约束a[i]<=a[i-1]+diff[i-1] for(int i=1;i<n;i++) if(maxA[i-1]!=Long.MAX_VALUE) maxA[i]=Math.min(maxA[i],maxA[i-1]+diff[i-1]); //从右到左遍历:约束a[i]<=a[i+1]+diff[i] for(int i=n-2;i>=0;i--) if(maxA[i]!=Long.MAX_VALUE) maxA[i]=Math.min(maxA[i],maxA[i+1]+diff[i]); //计算序列中的最大值(保证非负) long maxVal=0; for(long val:maxA) maxVal=Math.max(maxVal,Math.max(val,0)); return (int)maxVal; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/20 3:30:46

线程安全不可变类:某电商平台的购物车服务在促销期间频繁出现商品数量不一致的问题。分析发现,多个线程同时修改购物车对象导致数据混乱。当团队将购物车核心对象重构为不可变类后,问题迎刃而解,系统性能反而提升

深入剖析不可变类&#xff1a;线程安全的终极设计模式引言&#xff1a;为什么不变性如此重要&#xff1f;在多线程编程成为标配的今天&#xff0c;线程安全问题犹如悬在开发者头上的达摩克利斯之剑。数据竞争、死锁、可见性问题频频出现&#xff0c;而不可变对象&#xff08;Im…

作者头像 李华
网站建设 2026/3/15 7:48:57

【毕业设计】深度学习基于python_CNN卷积神经网络识别花卉是否枯萎

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

作者头像 李华
网站建设 2026/3/15 7:44:52

AI大模型:大数据旅游景点推荐系统 机器学习算法 协同过滤推荐算法 数据分析 可视化 django框架 大数据毕业设计 基于用户+基于物品✅

博主介绍&#xff1a;✌全网粉丝10W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…

作者头像 李华
网站建设 2026/3/15 11:50:03

新手必看:什么是‘Automated Query‘错误及基础应对方法

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个新手友好的教学工具&#xff0c;功能包括&#xff1a;1. 交互式解释什么是Automated Query错误&#xff1b;2. 展示常见触发场景的动画演示&#xff1b;3. 提供基础解决方…

作者头像 李华