门户网站营销特点,一级消防工程师考试地点,郑州网站制作生产厂商定制,常用的网络营销推广方法有哪些给定一个含有 n 个正整数的数组和一个正整数 s #xff0c;找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组#xff0c;并返回其长度。如果不存在符合条件的子数组#xff0c;返回 0。 
示例#xff1a; 
输入#xff1a;s  7, nums  [2,3,1,2,4,3]输出#xff1a;2… 
给定一个含有 n 个正整数的数组和一个正整数 s 找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组并返回其长度。如果不存在符合条件的子数组返回 0。 
示例 
输入s  7, nums  [2,3,1,2,4,3]输出2解释子数组 [4,3] 是该条件下的长度最小的子数组。 
示例 2 
输入target  4, nums  [1,4,4]
输出1 
提示 
1  target  10^91  nums.length  10^51  nums[i]  10^5 
思路1暴力解法复杂度大 
class Solution {public int minSubArrayLen(int target, int[] nums) {int result  0xFFFF; // 最终的结果int sum  0; // 子序列的数值之和int subLength  0; // 子序列的长度for (int i  0; i  nums.length; i) { // 设置子序列起点为isum  0;for (int j  i; j  nums.length; j) { // 设置子序列终止位置为jsum  nums[j];if (sum  target) { // 一旦发现子序列和超过了s更新resultsubLength  j - i  1; // 取子序列的长度result  result  subLength ? result : subLength;break; // 因为我们是找符合条件最短的子序列所以一旦符合条件就break}}}// 如果result没有被赋值的话就返回0说明没有符合条件的子序列return result  0xFFFF ? 0 : result;}
} 
思路2看到关键词连续 想到滑动窗口 窗口大小由left和right指针决定 
class Solution {public int minSubArrayLen(int target, int[] nums) {int left  0;int sum  0;int result  Integer.MAX_VALUE;for (int right  0; right  nums.length; right) {sum  nums[right]; // 扩大窗口while (sum  target) {result  Math.min(result, right - left  1);sum - nums[left]; // 去掉滑动窗口第一个值 缩小窗口}}return result  Integer.MAX_VALUE ? 0 : result;}
}