【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;
       
    }
}
相关推荐
码少女7 分钟前
数据结构——B+树基础
数据结构·b树
牧瀬クリスだ14 分钟前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法
文丑颜不良啊17 分钟前
LeetCode1141~1160题目解析
java·leetcode
木井巳22 分钟前
【动态规划: 路径问题】下降路径最小和
java·算法·leetcode·动态规划·推荐算法
郭小李41 分钟前
spring 的 @CookieValue 注解 用法
java·后端·spring
deepseek231 小时前
OpenAI三项科学发现拆解:3-SAT亚指数算法挑战ETH,AI科学声明的验证流水线怎么搭
人工智能·算法·openai
梦帮科技1 小时前
基于幺正李代数连续归一化流的混合量子生成模型 (HQNN-Flow) 完整技术指南(上部分)
网络·人工智能·算法·量子计算
青少儿编程课堂1 小时前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
god_cvz1 小时前
麒麟 V10(ARM64 / aarch64)源码编译 3dtiles 全步骤
后端·gis
武子康1 小时前
批量设备任务显示 COMPLETED,为什么还有设备失败?
人工智能·后端·agent