如何为昆明企业定制SEO友好型网站?
摘要:昆明模板建站定制网站,网站做seo教程,用ftp做网站,wordpress简题力扣刷题 滑动窗口相关的部分题解 209. 长度最小的子数组904. 水果成篮76. 最小覆盖子串 209. 长度最小的子数组 leetcode题目链接 209.
昆明模板建站定制网站,网站做seo教程,用ftp做网站,wordpress简题力扣刷题 滑动窗口相关的部分题解 209. 长度最小的子数组904. 水果成篮76. 最小覆盖子串 209. 长度最小的子数组
leetcode题目链接 209.长度最小的子数组 题目内容是这样的#xff1a;给定一个含有 n个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的… 力扣刷题 滑动窗口相关的部分题解 209. 长度最小的子数组904. 水果成篮76. 最小覆盖子串 209. 长度最小的子数组
leetcode题目链接 209.长度最小的子数组 题目内容是这样的给定一个含有 n个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的连续子数组 [numsl, numsl1, …, numsr-1, numsr] 并返回其长度。如果不存在符合条件的子数组返回 0。 理解题意是要找到这样的连续子数组满足条件①子数组元素之和≥target②目标子数组是所有满足条件①的数组中所含元素个数最少的。 这里强调连续子数组是因为可能存在题目要求——找到数组中的最少的几个元素使得元素之和≥target。 寻找连续子数组可以使用最简单的暴力求解两遍循环找到答案时间复杂度O(N^2)。 在暴力求解中很多子集的寻找是没有必要的比如下面的情况子数组[3, 1, 2 ,4]的和已经满足≥target题意中说明了是正整数数组那么再往后增加元素子数组之和会继续增大一定满足题意但是子数组的长度也会增大然而我们的目标是找到满足和≥target的长度最短的子数组。因此在一个子数组之后满足≥target后固定ij继续增大是没有必要的。 这道题目可以使用滑动窗口解决时间复杂度O(N)。思路
1、首先两个指针left和right分别表示子数组的边界2、固定leftright向右移动寻找到和≥target的子数组后停止 ——此时的子数组之和是从nums[left]……nums[right]是从左往右累加达到了目标没有nums[right]子数组的和是target的但是没有nums[left]呢那就不一定啦~ ——因此接下来就是在这个满足了≥target要求的可行解上寻找最优解。3、固定rightleft向右移动。逐步缩小子数组的长度的同时验证子数组和是否满足≥target。left一直向右移动直到子数组和target那么此时的left向左一位就是在这个子数组中满足条件的最短的子子数组了。4、此时的left和right之间的数组不满足≥target了并且在right之前的子数组都探索了因此重复2-3遍历完整个数组。 代码如下C
class Solution {
public:int minSubArrayLen(int target, vectorint nums) {int n nums.size();int ans INT_MAX;int start 0, end 0, sum 0;while(end n){sumnums[end];while(sumtarget){//满足循环要求题目要求进入循环判断当前子数组长度和ans哪个更短更新ans end - start 1 ans ? end - start 1 : ans;sum - nums[start];//移除掉start即left元素尝试缩短子数组的长度寻找最优解start;}end;//end即right要一直向右移动到知道sumtarget才会进入下面的循环}//注意最后可能没有解所以子数组长度是0return ans INT_MAX ? 0 : ans;}
};904. 水果成篮
leetcode题目链接 904. 水果成篮 理解题意①只有两个篮子那么就只能采摘两种水果②选择一棵树开始比如是fruits[left]那么从这颗树开始每棵树摘一颗果子直到遇到第三种果树停止假设是fruits[right]③要寻找right - left 1最大摘得的果子数最多的情况。 简化题意只包含两种果树的最长连续子数组。
