【Leetcode】1477. 找两个和为目标值且不重叠的子数组

1477. 找两个和为目标值且不重叠的子数组

如题,维护两个不定窗口之和为target,然后必须保证两个子数组长度最小和

思路:维护左,枚举右,前缀状态记录

java 复制代码
class Solution {
    public int minSumOfLengths(int[] arr, int target) {
        int n=arr.length;
        int[] best=new int[n];
        int INF=Integer.MAX_VALUE/2;

        int ans=INF;
        int sum=0;
        int left=0;
        int bestSoFar=INF;//初始化
        

        //枚举右端点
        for(int right=0;right<n;right++){
            sum+=arr[right];
            
            while(sum>target){
                sum-=arr[left];
                left++;
            }
            //维护左,best[j]表示在区间 [0..j] 内(子数组右端点 ≤ j),和为 target 的子数组的最小长度
            if(sum==target){
                int len=right-left+1;
                if(left>0&&best[left-1]!=INF){
                    ans=Math.min(ans,best[left-1]+len);
                }
                bestSoFar=Math.min(bestSoFar,len);
            }
            best[right]=bestSoFar;
        }
        return ans==INF?-1:ans;
       
    }
}
相关推荐
泡泡oO5 分钟前
“如果你还在用Superpowers,那我不要和你说话”
前端·后端·全栈
我命由我1234510 分钟前
Photoshop - Photoshop 使用内容识别填充移除对象
学习·职场和发展·产品运营·求职招聘·职场发展·学习方法·photoshop
武子康34 分钟前
LingBot-Video 怎么选推理路径?8 步 DMD 不等于小显存
人工智能·后端
edtoplort35 分钟前
OpenAI紧急叫停GPT-6.1 Astra训练,奥尔特曼为何踩刹车
人工智能·gpt·算法
蒜香可达鸭36 分钟前
让视频生成流水线跑不崩:一个事件溯源的多 Agent 可靠执行框架
算法
打工仔折腾 AI1 小时前
Docker镜像分层与卷挂载到底怎么工作:一次文件系统层面的实测分析
运维·人工智能·后端·python·docker·容器·性能优化
程序员Sunday1 小时前
MCP stdio 与 Streamable HTTP 怎么选,流式消息传到哪里
后端
小羊没烦恼!1 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
Nebula_g1 小时前
JavaSE拓展:Arrays和Collections工具类
java·开发语言·算法·排序算法·工具类·javase·技术栈
tntxia1 小时前
单点登录(SSO)完整技术实现方案
后端