news 2026/5/9 21:59:26

第 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/5/3 14:20:24

全球因瓦合金箔材市场分析与行业调研

因瓦合金箔材是一种由镍铁基精密合金轧制而成的极薄带材&#xff0c;其最核心的物理特性是在一定的温度范围内具有极低甚至近乎为零的热膨胀系数。这种独特的低膨胀特性源于其合金成分的精密平衡和特殊热处理&#xff0c;使其能够显著抵抗因环境温度变化而产生的尺寸伸缩。因其…

作者头像 李华
网站建设 2026/5/7 19:18:59

栈封闭的核心原理:为什么局部变量是线程安全的?某金融交易系统的日期格式化操作在高并发下成为性能瓶颈。原本使用全局共享的SimpleDateFormat对象,即使加锁后QPS(每秒查询率)也只有2000

栈封闭&#xff1a;最简单却最强大的线程安全技术引言&#xff1a;线程安全的成本与挑战在多线程编程的世界中&#xff0c;开发人员常常陷入各种同步机制的泥潭&#xff1a;synchronized关键字、Lock锁、volatile变量、原子类……这些技术虽然有效&#xff0c;但往往伴随着性能…

作者头像 李华
网站建设 2026/5/1 8:26:37

【毕业设计】基于机器学习深度学习-pytorch对水果(柠檬)品种识别

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

作者头像 李华
网站建设 2026/5/6 3:07:26

零基础学会逻辑回归:从原理到实现

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向初学者的逻辑回归教学项目。要求&#xff1a;1. 用通俗语言解释逻辑回归原理&#xff08;不超过200字&#xff09;&#xff1b;2. 提供一个小型示例数据集&#xff08…

作者头像 李华