当前位置:网站首页>LeetCode 1477. Find two subarrays with sum as the target value and no overlap
LeetCode 1477. Find two subarrays with sum as the target value and no overlap
2022-07-07 16:59:00 【@Little safflower】
Problem description
Give you an array of integers arr And an integer value target .
Please come in arr In looking for Two non overlapping subarrays And their sum is equal to target . There may be many options , Please return the sum of the length of the two sub arrays that meet the requirements minimum value .
Please return the minimum length and , If you can't find such two sub arrays , Please return -1 .
Example 1:
Input :arr = [3,2,2,4,3], target = 3
Output :2
explain : There are only two subarrays and 3 ([3] and [3]). Their length and are 2 .
Example 2:Input :arr = [7,3,4,7], target = 7
Output :2
explain : Even though we have 3 The sum of two non overlapping subarrays is 7 ([7], [3,4] and [7]), But we will choose the first and third sub arrays , Because of their length and 2 Is the minimum .
Example 3:Input :arr = [4,3,2,6,2,3,4], target = 6
Output :-1
explain : We have only one sum for 6 Subarray .
Example 4:Input :arr = [5,5,4,4,5], target = 3
Output :-1
explain : We can't find and for 3 Subarray .
Example 5:Input :arr = [3,1,1,1,5,1,2,1], target = 3
Output :3
explain : Notice the subarray [1,2] and [2,1] Can't be a solution because they overlap .
Tips :
1 <= arr.length <= 10^5
1 <= arr[i] <= 1000
1 <= target <= 10^8source : Power button (LeetCode)
link :https://leetcode.cn/problems/find-two-non-overlapping-sub-arrays-each-with-target-sum
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
Java
class Solution {
public int minSumOfLengths(int[] arr, int target) {
int n = arr.length;
int[] dp = new int[n];
// Minimum requirements , Fill with a larger number
Arrays.fill(dp,Integer.MAX_VALUE / 2);
int ans = Integer.MAX_VALUE;
// Double pointer
int left = 0;
int sum = 0;
for(int right = 0;right < n;right++){
sum += arr[right];
while(left <= right && sum > target){
sum -= arr[left++];
}
if(sum == target){
dp[right] = right - left + 1;
if(left != 0){
ans = Math.min(ans,dp[left - 1] + dp[right]);
}
}
if(right != 0){
dp[right] = Math.min(dp[right - 1],dp[right]);
}
}
return ans > n ? -1 : ans;
}
}
边栏推荐
猜你喜欢
The difference and working principle between compiler and interpreter
Cesium(3):ThirdParty/zip. js
AutoLISP series (2): function function 2
记录Servlet学习时的一次乱码
[designmode] facade patterns
【MySql进阶】索引详解(一):索引数据页结构
The process of creating custom controls in QT to encapsulating them into toolbars (II): encapsulating custom controls into toolbars
skimage学习(2)——RGB转灰度、RGB 转 HSV、直方图匹配
The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit
【DesignMode】外观模式 (facade patterns)
随机推荐
LeetCode 1031. 两个非重叠子数组的最大和 每日一题
最新Android高级面试题汇总,Android面试题及答案
【医学分割】attention-unet
Personal notes of graphics (3)
【DesignMode】模板方法模式(Template method pattern)
QT video transmission
[designmode] flyweight pattern
Introduction and use of gateway
JS中null NaN undefined这三个值有什么区别
ATM system
Tidb cannot start after modifying the configuration file
Opencv configuration 2019vs
The process of creating custom controls in QT to encapsulating them into toolbars (II): encapsulating custom controls into toolbars
DNS 系列(一):为什么更新了 DNS 记录不生效?
QT picture background color pixel processing method
[designmode] template method pattern
logback. XML configure logs of different levels and set color output
最新高频Android面试题目分享,带你一起探究Android事件分发机制
null == undefined
使用JSON.stringify()去实现深拷贝,要小心哦,可能有巨坑