当前位置: 首页 > news >正文

鹰潭做网站公司北京seo的排名优化

鹰潭做网站公司,北京seo的排名优化,网站开发项目合同书,外贸网站代运营给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&#xf…

 

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其总和大于等于 target 的长度最小的 

子数组

 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

提示:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 104

 

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left = 0, sum = 0;int n = nums.size();int min_length = INT_MAX;for (int right = 0; right < n; ++right) {sum += nums[right];while (sum >= target) {min_length = min(min_length, right - left + 1);sum -= nums[left];left++;}}return min_length == INT_MAX ? 0 : min_length;}
};

 

由于子数组 是数组中连续的 非空 元素序列。这意味着,在一个数组中选择的元素必须彼此相邻,才能构成一个子数组。

滑动窗口是一种在数组或字符串等线性数据结构上高效地解决子区间问题的方法。问题的核心在于找到一个和大于等于 target 的最短连续子数组。为了高效地找到这个子数组,我们可以使用滑动窗口

初始化定义 left 指针为窗口的左边界,right 指针为窗口的右边界。用 sum 变量记录窗口内元素的和,用 min_length 变量存储满足条件的最小子数组长度。

right 指针遍历数组,将每个元素值加入 sum。这样做的目的是逐步扩大窗口,尝试找到满足条件(sum >= target)的子数组

sum 大于等于 target,说明当前窗口已经符合条件。此时更新 min_length

为了找到更小的满足条件的子数组长度,我们尝试通过增加 left 来缩小窗口。将 nums[left]sum 中减去,然后将 left 向右移动一格,缩小窗口范围。不断重复该过程,直到 sum 小于 target 为止。

遍历结束后,min_length 会记录符合条件的最小长度。如果 min_length 仍为初始化值,说明没有满足条件的子数组,返回 0;

实例:

  • target = 7
  • nums = [2, 3, 1, 2, 4, 3]

初始化变量

left = 0,sum = 0,min_length = INT_MAX

遍历数组,右指针 right 从 0 到 nums.size() - 1

第一步:right = 0
  • nums[0] = 2 加到 sum 中,sum = 2
  • sum < target,不满足条件,继续扩展窗口。
第二步:right = 1
  • nums[1] = 3 加到 sum 中,sum = 2 + 3 = 5
  • sum < target,继续扩展窗口。
第三步:right = 2
  • nums[2] = 1 加到 sum 中,sum = 5 + 1 = 6
  • sum < target,继续扩展窗口。
第四步:right = 3
  • nums[3] = 2 加到 sum 中,sum = 6 + 2 = 8
  • sum >= target,窗口满足条件,计算当前窗口长度 right - left + 1 = 3 - 0 + 1 = 4
  • 更新 min_length = min(INT_MAX, 4) = 4
  • 尝试收缩窗口:将 nums[left] = 2sum 中减去,sum = 8 - 2 = 6,然后 left 向右移动一格,left = 1
第五步:right = 3left = 1
  • 此时 sum = 6 < target,不满足条件,继续扩展窗口。
第六步:right = 4
  • nums[4] = 4 加到 sum 中,sum = 6 + 4 = 10
  • sum >= target,窗口满足条件,计算当前窗口长度 right - left + 1 = 4 - 1 + 1 = 4
  • min_length 保持不变,因为已经是 4。
  • 尝试收缩窗口:将 nums[left] = 3sum 中减去,sum = 10 - 3 = 7left 右移一格,left = 2
第七步:right = 4left = 2
  • sum >= target,继续满足条件,计算当前窗口长度 right - left + 1 = 4 - 2 + 1 = 3
  • 更新 min_length = min(4, 3) = 3
  • 尝试收缩窗口:将 nums[left] = 1sum 中减去,sum = 7 - 1 = 6left 右移一格,left = 3
第八步:right = 4left = 3
  • 此时 sum = 6 < target,窗口不满足条件,继续扩展窗口。
第九步:right = 5
  • nums[5] = 3 加到 sum 中,sum = 6 + 3 = 9
  • sum >= target,窗口满足条件,计算当前窗口长度 right - left + 1 = 5 - 3 + 1 = 3
  • min_length 保持不变,因为已经是 3。
  • 尝试收缩窗口:将 nums[left] = 2sum 中减去,sum = 9 - 2 = 7left 右移一格,left = 4
第十步:right = 5left = 4
  • sum >= target,继续满足条件,计算当前窗口长度 right - left + 1 = 5 - 4 + 1 = 2
  • 更新 min_length = min(3, 2) = 2
  • 尝试收缩窗口:将 nums[left] = 4sum 中减去,sum = 7 - 4 = 3left 右移一格,left = 5

遍历完成

最后得到 min_length = 2,即满足条件的最短子数组长度为 2(子数组 [4, 3] 满足条件)。

http://www.hkea.cn/news/925770/

相关文章:

  • 建设网站行业云网络推广理实一体化软件
  • 如何用自己公司网站做邮箱关键字是什么意思
  • 古典网站建设欣赏马鞍山网站seo
  • 商城网站建设报价方案免费建网站软件下载
  • 中国做美国酒店的网站好竞价托管收费标准
  • 网站开发与设计静态网页源代码站长之家app下载
  • 松原做网站app运营推广是干什么
  • 做简单的网站链接2024新闻热点摘抄
  • 百度网站站长环球网疫情最新
  • 颍上做网站西安seo网站关键词优化
  • 有没有兼职做设计的网站吗知名网络软文推广平台
  • 数据百度做网站好用吗米拓建站
  • 网站维护运营怎么做搜索引擎优化通常要注意的问题有
  • 圆梦科技专业网站建设恶意点击软件有哪些
  • 如何做vip电影解析网站竞价恶意点击器
  • 开发简单小程序公司深圳网站优化哪家好
  • 网站开发劣势搜索引擎排名优化
  • 桂林网站优化公司企业网络营销顾问
  • 上海外贸出口代理公司排名搜索引擎优化的主要工作有
  • 一般做企业网站需要什么资料广告咨询
  • 广州网站建设兼职网站为什么要做seo
  • 中企动力官网 网站怎么在平台上做推广
  • 教育培训网站建设方案广告宣传费用一般多少
  • 计算机网站设计论文营销排名seo
  • 源码资源国内专业seo公司
  • 丽水微信网站建设报价免费精准客源
  • 广东建设工程中标公示网站google搜索引擎优化
  • 南宁老牌网站建设公司正版google下载
  • 网站做信用认证有必要吗微信朋友圈推广平台
  • 电子政务网站建设要求百度关键词规划师