怎么把网站上的通栏长沙企业100强名单
2026/2/27 23:24:50 网站建设 项目流程
怎么把网站上的通栏,长沙企业100强名单,网站无后台添加后台,移动端手机网站模板下载一、题目概述给定一个含有 n 个 正整数 的数组 nums 和一个正整数 target#xff0c; 请找出该数组中 满足其和 ≥ target 的长度最小的连续子数组#xff0c;并返回其长度。 如果不存在符合条件的子数组#xff0c;则返回 0。二、问题分析1#xff0c; 连续子数组 求最小…一、题目概述给定一个含有n个正整数的数组nums和一个正整数target请找出该数组中满足其和 ≥ target 的长度最小的连续子数组并返回其长度。如果不存在符合条件的子数组则返回0。二、问题分析1 连续子数组 求最小长度题目要求的是连续子数组不是子序列和 ≥ target长度最小这三个条件共同决定了本题非常适合使用滑动窗口双指针方法。2 为什么不能暴力枚举暴力做法是枚举所有子数组计算每个子数组的和时间复杂度为O(n²)在数据规模较大时必然超时 ❌。三、滑动窗口核心思想滑动窗口的本质维护一个区间[left, right]并保证right向右扩展增加窗口内的元素当窗口内的和 ≥ target时尝试移动left缩小窗口更新最小长度适用条件⚠️本题能够使用滑动窗口的关键前提是数组中的元素全部为正整数因为只有正整数窗口右移时区间和才会单调递增左移时才会单调递减。四、算法步骤详解初始化left 0sum 0ans n 1表示未找到right从0开始遍历数组将nums[right]加入sum当sum target时更新最小长度ans min(ans, right - left 1)移动left缩小窗口sum - nums[left] left遍历结束 如果ans未更新返回0否则返回ans五、代码class Solution { public: int minSubArrayLen(int target, vectorint nums) { int n nums.size(); int left 0; int sum 0; int ans n 1; for (int right 0; right n; right) { sum nums[right]; while (sum target) { ans min(ans, right - left 1); sum - nums[left]; left; } } return ans n 1 ? 0 : ans; } };

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询