【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;
       
    }
}
相关推荐
乱码三千1 小时前
使用 Docker-compose 搭建SRS直播中转服务端
后端·架构·github
愛芳芳1 小时前
Swagger2 多环境动态配置实战指南
java·后端·maven·springboot·swagger
空空潍1 小时前
2026年软考中级软件设计师(二):数据结构
数据结构·软考·软件设计师·软设
JaguarJack2 小时前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php·服务端
BingoGo2 小时前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php
Bs_MoneyMagnet5 小时前
基于springboot+vue的滑雪场票务与装备租赁系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
不会就选b9 小时前
算法日常・每日刷题--<贪心>14
算法
AlienZHOU9 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
狗头大军之江苏分军12 小时前
《潮水漫过十七岁》开学了
后端