当前位置:网站首页>LeetCode 1477. 找两个和为目标值且不重叠的子数组 每日一题
LeetCode 1477. 找两个和为目标值且不重叠的子数组 每日一题
2022-07-07 15:32:00 【@小红花】
问题描述
给你一个整数数组 arr 和一个整数值 target 。
请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target 。可能会有多种方案,请你返回满足要求的两个子数组长度和的 最小值 。
请返回满足要求的最小长度和,如果无法找到这样的两个子数组,请返回 -1 。
示例 1:
输入:arr = [3,2,2,4,3], target = 3
输出:2
解释:只有两个子数组和为 3 ([3] 和 [3])。它们的长度和为 2 。
示例 2:输入:arr = [7,3,4,7], target = 7
输出:2
解释:尽管我们有 3 个互不重叠的子数组和为 7 ([7], [3,4] 和 [7]),但我们会选择第一个和第三个子数组,因为它们的长度和 2 是最小值。
示例 3:输入:arr = [4,3,2,6,2,3,4], target = 6
输出:-1
解释:我们只有一个和为 6 的子数组。
示例 4:输入:arr = [5,5,4,4,5], target = 3
输出:-1
解释:我们无法找到和为 3 的子数组。
示例 5:输入:arr = [3,1,1,1,5,1,2,1], target = 3
输出:3
解释:注意子数组 [1,2] 和 [2,1] 不能成为一个方案因为它们重叠了。
提示:
1 <= arr.length <= 10^5
1 <= arr[i] <= 1000
1 <= target <= 10^8来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-two-non-overlapping-sub-arrays-each-with-target-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Java
class Solution {
public int minSumOfLengths(int[] arr, int target) {
int n = arr.length;
int[] dp = new int[n];
//要求最小,填充为较大的数
Arrays.fill(dp,Integer.MAX_VALUE / 2);
int ans = Integer.MAX_VALUE;
//双指针
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;
}
}
边栏推荐
- Laravel constructor and middleware execution order
- Find tags in prefab in unity editing mode
- 预售17.9万,恒驰5能不能火?产品力在线,就看怎么卖
- 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
- Temperature sensor chip used in temperature detector
- Cesium (4): the reason why gltf model is very dark after loading
- Prometheus API deletes all data of a specified job
- 低代码(lowcode)帮助运输公司增强供应链管理的4种方式
- 两类更新丢失及解决办法
- The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit
猜你喜欢
应用在温度检测仪中的温度传感芯片
Pisa-Proxy SQL 解析之 Lex & Yacc
Interface oriented programming
掌握这套精编Android高级面试题解析,oppoAndroid面试题
pycharm 终端部启用虚拟环境
如何选择合适的自动化测试工具?
Imitate the choice of enterprise wechat conference room
Three. JS series (2): API structure diagram-2
[Android -- data storage] use SQLite to store data
最新Android面试合集,android视频提取音频
随机推荐
无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
在哪个期货公司开期货户最安全?
正在准备面试,分享面经
整理几个重要的Android知识,高级Android开发面试题
[Android -- data storage] use SQLite to store data
Laravel changed the session from file saving to database saving
掌握这个提升路径,面试资料分享
值得一看,面试考点与面试技巧
The differences between exit, exit (0), exit (1), exit ('0 '), exit ('1'), die and return in PHP
Horizontal and vertical centering method and compatibility
How can laravel get the public path
Introduction and use of gateway
全网“追杀”钟薛高
如何选择合适的自动化测试工具?
Spark Tuning (III): persistence reduces secondary queries
Temperature sensor chip used in temperature detector
直接上干货,100%好评
Personal notes of graphics (2)
作为Android开发程序员,android高级面试
Laravel5.1 Routing - routing packets