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

做兼职什么网站比较好如何在云服务器上搭建网站

做兼职什么网站比较好,如何在云服务器上搭建网站,免费网店有哪些平台,自动写作网站LeetCode 2537. 统计好子数组的数目 问题描述 给定一个整数数组nums和一个整数k,定义"好子数组"为包含至少k对相等元素的子数组。任务是计算数组中所有"好子数组"的数量。 两个相等的元素构成一对,例如数组[1,1,1]中有3对(1,1)&am…

LeetCode 2537. 统计好子数组的数目

在这里插入图片描述

问题描述

给定一个整数数组nums和一个整数k,定义"好子数组"为包含至少k对相等元素的子数组。任务是计算数组中所有"好子数组"的数量。

两个相等的元素构成一对,例如数组[1,1,1]中有3对(1,1),因为C(3,2)=3。

解题思路

小明立即识别出这是一个适合使用滑动窗口技术的问题。这种方法特别适合需要找到满足特定条件的连续子数组的情况。他的整体策略如下:

  1. 维护一个动态窗口,用左右指针(left和right)标记窗口边界
  2. 使用哈希表记录窗口内每个元素的出现频率
  3. 追踪窗口内相等元素对的数量
  4. 当窗口满足条件时(对数≥k),计算有效子数组数量并收缩左侧

代码实现与详细分析

小明实现了以下解决方案:

class Solution:def countGood(self, nums: List[int], k: int) -> int:n = len(nums)left = 0pairs = 0  # 当前窗口中的对数result = 0freq = {}  # 当前窗口中每个元素的频率for right in range(n):# 添加新元素到窗口,并更新对数# 当添加一个元素时,它与之前所有相同元素形成新的对pairs += freq.get(nums[right], 0)freq[nums[right]] = freq.get(nums[right], 0) + 1# 从左侧收缩窗口,直到对数小于kwhile left <= right and pairs >= k:# 对于每个满足条件的窗口,加上以当前left开始、以right或之后位置结束的子数组数量result += n - right# 移除左侧元素,更新对数freq[nums[left]] -= 1pairs -= freq[nums[left]]left += 1return result

代码分析

小明的解决方案展示了滑动窗口算法的精髓:

  1. 初始化:设置左指针、对计数器、结果变量和频率哈希表
  2. 扩展窗口:右指针逐步向右移动,每次加入新元素并更新对数
  3. 计算对数:当添加一个新元素时,它与窗口中已有的相同元素形成新对,对数增加量等于该元素之前的出现次数
  4. 收缩窗口:当窗口包含的对数达到或超过k时,记录满足条件的子数组数量,然后从左侧收缩窗口
  5. 计算结果:对于每个满足条件的窗口,所有以当前left开始、以right或之后位置结束的子数组都是有效的,数量为(n-right)

关键洞察

小明注意到,当窗口满足条件时,不仅当前窗口是一个有效解,而且任何包含当前窗口的更大子数组也都是有效解。这就是为什么他在代码中使用result += n - right,因为从right到数组末尾的所有位置都可以作为以left开始的有效子数组的结束位置。

复杂度分析

小明对算法的时间和空间复杂度进行了分析:

  • 时间复杂度:O(n),其中n是数组长度。虽然有嵌套循环,但每个元素最多被添加和移除一次,所以总操作次数是线性的。
  • 空间复杂度:O(n),用于存储频率哈希表,最坏情况下数组中的所有元素都不同。

总结与反思

通过这个问题,小明巩固了滑动窗口技术在子数组问题中的应用。他认识到,对于需要满足特定累积条件的连续区间问题,滑动窗口往往是一种高效的解决方案。

特别是,他学到了如何在窗口滑动过程中高效地维护和更新计数信息,这是解决此类问题的关键。这个技巧不仅适用于本题,也适用于许多其他涉及子数组统计的问题。

明天,小明计划继续探索更复杂的滑动窗口变体,以及其在其他类型算法问题中的应用。


文章转载自:

http://jBVnRddp.hxskp.cn
http://O0EVI7ZC.hxskp.cn
http://Wm2pj3jX.hxskp.cn
http://LFJmKCzm.hxskp.cn
http://v7wxfwoU.hxskp.cn
http://r9CI8X8T.hxskp.cn
http://CeSIiIaY.hxskp.cn
http://V36iLTxY.hxskp.cn
http://1CkLCynj.hxskp.cn
http://Uv648Q0t.hxskp.cn
http://RAl5ltPg.hxskp.cn
http://HY47bmWl.hxskp.cn
http://8p2B3a9k.hxskp.cn
http://hr7tQrlp.hxskp.cn
http://6kj5uUir.hxskp.cn
http://tbl7krIQ.hxskp.cn
http://i7oqtMTM.hxskp.cn
http://p0Axg3HP.hxskp.cn
http://8Dd8GoKg.hxskp.cn
http://deO0Pi2o.hxskp.cn
http://OL8MFuwA.hxskp.cn
http://SVEcaK3Z.hxskp.cn
http://JWFLNxZt.hxskp.cn
http://f8I9rwCE.hxskp.cn
http://RS7rqrCe.hxskp.cn
http://ODLblLqX.hxskp.cn
http://nOejx3Xy.hxskp.cn
http://AnCi3IUF.hxskp.cn
http://MJjvm7lV.hxskp.cn
http://7toHGjse.hxskp.cn
http://www.dtcms.com/wzjs/684301.html

相关文章:

  • 专注服务于站长和网站的信息平台.wordpress导航标签文件在哪
  • 给网站做h5缓存机制浏览器直接进入网站
  • 网络营销中自建网站国内购物网站案例分析
  • 有没有可以做兼职的网站吗wordpress标题间隔符修改
  • 做网站 公司有哪些陕西建设网综合综合服务中心
  • emlog做企业网站海沧建设网站多少
  • 电子书推送网站怎么做有源代码如何做网站
  • 构建网站无障碍建设河南如何建网站要什么条件
  • 制作展示型网站公司哪家好国内网站域名
  • c access做网站登录页面怎么维护网站教程
  • wordpress网站速度慢网站改版解决方案
  • 铁门关网站建设一套vi设计多少钱
  • 常见的网站首页布局有哪几种站酷网怎么接单赚钱
  • 自适应网站功能前端素材网站
  • 长宁区网站建设设计话色下载168网站
  • 钓鱼网站的类型wordpress修改发布页面插件
  • 百度网站优化是什么意思杭州网站优化体验
  • wordpress站下所有标签wordpress 微信客户端
  • 医疗号网站开发开封开封县网站建设
  • 公司宣传网站建站网站服务器和空间
  • 网站建设用语上海建设人才网证书查询
  • 求推荐专门做借条的网站开网店赚钱吗
  • 织梦网站首页自动更新免费发布招工的平台
  • 佛山网络公司哪家最好网站建设优化公司
  • 扬州建设教育信息网站wordpress安装插件需要ftp
  • 网站服务器和网站备案吗wordpress图片采集插件
  • 合肥做网站推广wordpress添加媒体库
  • wordpress职业学校模板谷歌seo网站推广怎么做优化
  • 播放视频网站怎么做的导航网站是怎么做的
  • 查询网站所有死链接誉字号网站