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

网站建设经验典型站长工具是做什么的

网站建设经验典型,站长工具是做什么的,网络推广是网络营销的基础对不对,网站和网页的区别在于代码随想录 第一章 数组 209.长度最小的子数组 题目: 209.长度最小的子数组 题目描述: 给定一个含有 n​ 个正整数的数组和一个正整数 target​ 。 找出该数组中满足其总和大于等于target​ 的长度最小的 子数组 [numsₗ, numsₗ₊₁, ..., numsᵣ₋₁,…

代码随想录 第一章 数组 209.长度最小的子数组

题目: 209.长度最小的子数组

  • 题目描述:

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

    找出该数组中满足其总和大于等于target​ 的长度最小的 子数组 [numsₗ, numsₗ₊₁, ..., numsᵣ₋₁, numsᵣ]​ ,并返回其长度 如果不存在符合条件的子数组,返回 0​ 。

一、思想

滑动窗口的核心思想是就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果

在本题中实现滑动窗口,主要确定如下三点:

  • 窗口内是什么?
  • 如何移动窗口的起始位置?
  • 如何移动窗口的结束位置?

窗口就是 满足其和 ≥ target​ 的长度最小的 连续 子数组。

窗口的起始位置如何移动:如果当前窗口的值大于等于target​了,窗口就要向前移动了(也就是该缩小了)。

窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。

解题的关键在于窗口的起始位置如何移动。

滑动窗口算法详解(示例:nums=[2,3,1,2,4,3]​, target=7​)

右指针当前元素窗口范围累计和是否触发收缩操作记录最小长度左指针位置变化轨迹
02[0,0]2右移 →0 → 0
13[0,1]5右移 →0 → 0
21[0,2]6右移 →0 → 0
32[0,3]8① 长度=4 → subLength=4
sum-=2​ → sum=6
③ 左指针移动 →left=1
40 → 1
44[1,4]10① 长度=4 → 不更新
sum-=3 ​→ sum=7
③ 左移 → left=2
再次检测 → 长度=3 → subLength=3
sum-=1​ → sum=6
⑥ 左指针移动→ left=3
31 → 3
53[3,5]9① 长度=3 → 不更新
sum-=2​ → sum=7
③ 左移 → left=4
再次检测 → 长度=2 → subLength=2
sum-=4​ → sum=3
⑥ 左指针移动→ left=5
23 → 5

二、代码

/*** 类Solution:解决问题*/
class Solution
{
public:/*** 函数minSubArrayLen:寻找最短的子数组,其和至少为target* @param target 目标和* @param nums 整数数组* @return 返回最短子数组的长度,如果不存在满足条件的子数组,返回0*/int minSubArrayLen(int target, vector<int> &nums){// 初始化结果为最大整数int result = INT_MAX;// 初始化当前和为0int sum = 0;// 初始化子数组的起始位置为0int i = 0;// 初始化子数组的长度为0int subLength = 0;// 遍历数组for (int j = 0; j < nums.size(); j++){// 更新当前和sum += nums[j];// 当当前和大于等于目标和时while (sum >= target){// 更新子数组的长度subLength = j - i + 1;// 更新结果为当前结果和子数组长度的最小值result = result < subLength ? result : subLength;// 更新当前和sum -= nums[i++];}}// 如果结果仍为最大整数,返回0,否则返回结果return result == INT_MAX ? 0 : result;}
};

三、解析

1. 算法工作原理分解

1.1 初始化阶段

  • 核心变量定义

    int result = INT_MAX;  // 最小长度记录器(初始设为极大值)
    int sum = 0;           // 窗口和累计器
    int i = 0;             // 左指针(窗口起始位置)
    
  • 初始状态

    • 窗口范围:[0, 0)​(空窗口)
    • 示例:nums=[2,3,1,2,4,3]​ 初始时 sum=0

1.2 右指针主导窗口扩展

  • 遍历机制

    for(int j=0; j<nums.size(); j++) {  // j为右指针sum += nums[j];                 // 动态扩展窗口右边界
    
  • 操作特点

    • 右指针 j​ 单向前进(从0到n-1)
    • 每次扩展必然添加新元素到窗口
    • 示例:当 j=3​ 时,窗口扩展为 [2,3,1,2]

1.3 收缩条件检测

  • 触发条件

    while(sum >= target) {  // 必须用while循环
    
  • 检测逻辑

    • 当窗口和 sum​ ≥ target​ 时进入收缩阶段
    • 示例:j=3​ 时 sum=8 ≥7​ 触发收缩

1.4 窗口收缩与最小长度更新

  • 收缩操作流程

    1. 计算当前窗口长度

      subLength = j - i + 1;  // 闭区间长度计算
      
    2. 更新最小长度

      result = min(result, subLength);  // 取历史最小值
      
    3. 左指针右移

      sum -= nums[i++];  // 先减元素值,再移动左指针
      
  • 操作示例

    • 当窗口为 [2,3,1,2]​ 时:

      • 计算长度 4​ → 更新 result=4
      • 收缩后窗口变为 [3,1,2]​,sum=6

1.5 连续收缩机制

  • 多轮收缩场景

    while(sum >= target) {  // 可能执行多次收缩// 上述收缩操作
    }
    
  • 必要性

    • 确保找到以当前右指针为终点的最小窗口

    • 示例:当 j=4​ 时窗口 [1,4]​ 需连续收缩两次

      • 第一轮收缩:窗口 [2,4]​,sum=7
      • 第二轮收缩:窗口 [3,4]​,sum=6​(退出循环)

1.6 最终结果处理

  • 无效结果判断

    return (result == INT_MAX) ? 0 : result;
    
  • 逻辑意义

    • 若从未找到有效窗口(result​未更新),返回0
    • 示例最终结果:result=2​(窗口 [4,3]​)
2. 关键点说明
操作阶段时间复杂度保障机制示例中的操作表现
右指针扩展单层for​循环 → O(n)右指针完整遍历数组(6次移动)
左指针收缩每个元素最多被左指针访问一次 → O(n)左指针共移动4次(0→1→2→3→5)
窗口计算即时更新result​ → O(1) 操作3次有效更新(4→3→2)
循环检测while​确保完全收缩 → 无遗漏步骤5中触发两次连续收缩

四、复杂度分析

  • 时间复杂度O(n)
    滑动窗口的 左指针 left和右指针 right均单向移动,每个元素最多被访问两次(右指针扩展时访问一次,左指针收缩时访问一次)。对于长度为 n​ 的数组,总操作次数为 2n​ 次,最终时间复杂度为线性级别。
  • 空间复杂度O(1)
    仅使用固定数量的额外空间(sum​、left​、result​ 等整型变量),空间消耗与输入规模 n​ 无关。

http://www.dtcms.com/wzjs/7946.html

相关文章:

  • 宁波做网站优化多少钱百度官网app下载
  • 如何做pdf电子书下载网站成都短视频代运营
  • 合肥做网站首选 晨飞网络seo推广招聘
  • 做网站要注册那些商标北京优化网站建设
  • 网站图标怎么换天津网站建设优化
  • 如何创建电子商务网站站长工具ip地址查询
  • 网站建设及运维合同百度网络推广怎么收费
  • 团风做网站aso优化服务站
  • 桐城网站建设网推获客平台
  • 做美女网站流量seo挂机赚钱
  • 专业购物网站建设报价网络营销经典案例
  • 贵州省住房和城乡建设厅官网站首页外贸网站平台都有哪些 免费的
  • 国产做的视频网站百度关键词推广网站
  • 深圳网站建制作网络营销是学什么
  • 日本做设计的网站有哪些方面武汉seo网站推广培训
  • wordpress页面第一次访问被劫持cpu优化软件
  • 商业网站建设知识点灰色产业推广引流渠道
  • 中山企业网站建设公司百度搜索数据
  • 东莞互联网营销网站建设推广形式
  • 做网站怎么电话约客户视频剪辑培训班
  • 城北区建设局网站关键词搜索点击软件
  • 做爰全过程的视频的网站关键词推广优化外包
  • 建站网站方法推广什么app佣金高
  • 某拍卖公司企业网站源码网络精准推广
  • 建设招标项目常挂网站有哪些域名注册网站查询
  • 传奇私服网站建设视频教学网站怎么搭建
  • 中英企业网站模板百度网站搜索排名
  • 优化好的网站陕西seo排名
  • 网站建设哈尔滨app开发2注册商标查询官网入口
  • 河南省做网站的企业网络服务商主要包括哪些