209. 长度最小的子数组
数组 长度 最小
2023-06-13 09:14:05 时间
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的子数组。如果不存在符合条件的子数组,返回 0。
示例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的子数组。
进阶:
如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。
解:知识点,双指针滑动窗口
public int minSubArrayLen(int s, int[] nums) {
if(nums.length==0){
return 0;
}
int rtn = 0;
int target = nums[0];
int left = 0;
int right = 0;
while (left < nums.length) {
if (target >= s) {
if (rtn == 0) {
rtn = right - left + 1;
} else {
rtn = Math.min(rtn, right - left + 1);
}
left = left + 1;
target = target - nums[left - 1];
} else {
right = right + 1;
if (right < nums.length) {
target = target + nums[right];
} else {
break;
}
}
}
return rtn;
}
相关文章
- C/C++ int数组初始化
- 数组长度计算_c语言计算数组长度的函数
- C/CPP数组的深入理解 | 指针与数组 | 一二三维数组
- 2022-10-21:你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。 你要用 所有的火柴棍 拼成
- 2022-10-30:给你一个长度为 n 的整数数组 rolls 和一个整数 k 。 你扔一个 k 面的骰子 n 次,骰子的每个面分别是 1 到 k , 其中第
- 2022-10-30:给你一个长度为 n 的整数数组 rolls 和一个整数 k 。你扔一个 k 面的骰子 n 次,骰子的每个面
- 2022-12-22:给定一个数字n,代表数组的长度, 给定一个数字m,代表数组每个位置都可以在1~m之间选择数字, 所有长度为n的数组中,最长递增子序列长度为
- JS手撕(二) 数组扁平化、浅拷贝、深拷贝
- 2022-12-18:给定一个长度为n的二维数组graph,代表一张图,graph[i] = {a,b,c,d} 表示i讨厌(a
- 2023-01-06:给定一个只由小写字母组成的字符串str,长度为N,给定一个只由0、1组成的数组arr,长度为N,arr[i
- 2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。 n
- 2022-04-22:给你两个正整数数组 nums 和 target ,两个数组长度相等。 在一次操作中,你可以选择两个 不同 的下标 i 和 j , 其中 0
- mongodb实现数组对象求和方法实例
- split拆分数组长度问题详解编程语言
- 算法-二维数组中的查找详解编程语言
- C++实现可变长度的动态数组
- MySQL数组:实现高效组合管理(mysql数组包含)
- MySQL结果集无缝转化为C语言数组(c mysql结果数组中)
- php函数array_merge用法一例(合并同类数组)
- 探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
- GO语言基础之数组