栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法

文章目录
  • 滑动窗口
    • 1.利用滑动窗口解题
    • 2.两种解法
      • 第一种 — 暴力
      • 第二种 — 滑动窗口
    • 3.总结
      • python
      • 算法
    • 4.相关题目推荐

滑动窗口

leetcode题目链接

1.利用滑动窗口解题

所谓滑动窗口,就是不断地调节子序列的起始位置和终止位置,从而得出我们想要的结果,虽然都是使用双指针,但与上一个移除元素的双指针不同的是,这个更关注使得[slowindex,fastindex]之间的数值有效

2.两种解法 第一种 — 暴力

时间复杂度:O(n^2)
空间复杂度:O(1)

思路:开两层for循环,从头到尾分别遍历slowindex和fastindex使得所有可行解都被找到,比较长度即可

第二种 — 滑动窗口

时间复杂度:O(n)
空间复杂度:O(1)

思路:如下图

代码如下:

def minSubArrayLen(nums,target):
	slowindex = 0 # 慢指针
    sum = 0 # 记录窗口内数的和
    length = float("inf") # 距离初始化为一个很大的数

    for fastindex in range(len(nums)):
        sum += nums[fastindex] # 每次遍历都加上当前数
        while(sum>=target):# 如果和大于等于了target,就要将slowindex向前滑动,直到sum=target的情况就返回length,否则就返回0
3.总结 python
  1. list和str和互相转换

    list -> string :

     str = "".join(lst)
    

    string -> list

     lst = list(str)
    
  2. python3中字典是带顺序的

    小技巧:有时候用list中元组的方式可能比用dist更方便,因为可以使用索引来操作

    即用 [(a,b),(c,d),…] 代替 {a:b,c:d,…}

算法

实现滑动窗口需要确定的:

  1. 窗口内是什么? 本题中:满足其和 ≥ s 的长度最小的 连续 子数组。
  2. 如何移动窗口的起始位置? 本题中:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。
  3. 如何移动窗口的结束位置?本题中:窗口的结束位置就是遍历数组的指针,窗口的起始位置设置为数组的起始位置就可以了。
4.相关题目推荐

904.水果成篮
76.最小覆盖子串

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/423364.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号