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

网站建设维护课件pptseo关键词优化经验技巧

网站建设维护课件ppt,seo关键词优化经验技巧,网站建设教程金旭亮,wordpress gii插件2537. 统计好子数组的数目 问题 问题分析 给定一个整数数组 nums 和一个整数 k&#xff0c;返回 nums 中好子数组的数目。一个子数组 arr 如果有至少 k 对下标 (i, j) 满足 i < j 且 arr[i] arr[j]&#xff0c;则称它是一个好子数组。 思路分析 定义好子数组&#xff1…

2537. 统计好子数组的数目

问题

在这里插入图片描述

问题分析

给定一个整数数组 nums 和一个整数 k,返回 nums 中好子数组的数目。一个子数组 arr 如果有至少 k 对下标 (i, j) 满足 i < j 且 arr[i] == arr[j],则称它是一个好子数组。

思路分析

定义好子数组:一个子数组中,如果有至少 k 对相等元素(即 arr[i] == arr[j] 且 i < j),则该子数组为好子数组。
滑动窗口 + 哈希表:可以使用滑动窗口来枚举所有可能的子数组,并用哈希表来统计每个子数组中每个元素的出现次数,进而判断该子数组是否为好子数组。

代码

class Solution:def countGood(self, nums: List[int], k: int) -> int:n = len(nums)good_count = 0counter = Counter()pair_count = 0left = 0for right in range(n):counter[nums[right]] += 1pair_count += counter[nums[right]] - 1# 当前窗口内的 pair_count 大于等于 k 时,尝试收缩窗口while pair_count >= k:good_count += n - right  # 当前窗口及之后的所有子数组都是好子数组counter[nums[left]] -= 1pair_count -= counter[nums[left]]left += 1return good_count

复杂度分析

时间复杂度分析

外层循环(for right in range(n)):
这个循环会遍历数组 nums 的每个元素一次,因此其时间复杂度为 (O(n))。
内层循环(while pair_count >= k):
这个循环用于在 pair_count 大于等于 k 时收缩窗口。
关键点在于 left 指针的移动:left 指针在整个算法过程中最多移动 (n) 次(从 0 到 (n-1))。
因此,尽管这是一个嵌套循环,但 left 和 right 指针 combined 的总移动次数为 (2n)(每个指针最多移动 (n) 次),这使得内层循环的总体时间复杂度仍然为 (O(n))。
每次迭代中的操作:
counter[nums[right]] += 1 和 pair_count += counter[nums[right]] - 1:这两个操作的时间复杂度为 (O(1))。
good_count += n - right,counter[nums[left]] -= 1 和 pair_count -= counter[nums[left]]:这些操作的时间复杂度也为 (O(1))。
综合时间复杂度
外层循环:(O(n))
内层循环(包括其内部操作):(O(n)) (因为 left 指针最多移动 (n) 次)
因此,整体时间复杂度为 (O(n) + O(n) = O(n))。

空间复杂度分析

counter(Counter对象):
counter 用于存储当前窗口内每个元素的出现次数。
在最坏情况下(所有元素都不同),counter 的大小为 (n),因此空间复杂度为 (O(n))。
其他变量:
good_count、pair_count 和 left 等变量占用的空间为 (O(1))。
综合空间复杂度
counter:(O(n))
其他变量:(O(1))
因此,整体空间复杂度为 (O(n))。

学习

具体步骤
初始化:
n:数组 nums 的长度。
good_count:好子数组的数量,初始值为 0。
counter:Counter 对象,用于统计当前窗口内每个元素的出现次数。
pair_count:当前窗口内满足 arr[i] == arr[j] 且 i < j 的元素对数。
left:滑动窗口的左边界,初始值为 0。
扩展窗口(right):
遍历数组 nums,right 作为滑动窗口的右边界。
counter[nums[right]] += 1:增加 nums[right] 的计数。
pair_count += counter[nums[right]] - 1:更新 pair_count。具体来说,每次 nums[right] 加入窗口时,它与之前相同的元素形成新的配对,配对数量为 counter[nums[right]] - 1。
收缩窗口(left):
当 pair_count >= k 时,表示当前窗口内的子数组为“好子数组”。
good_count += n - right:当前窗口及之后的所有子数组都是“好子数组”,因此直接将这些子数组的数量加到 good_count 中。
counter[nums[left]] -= 1 和 pair_count -= counter[nums[left]]:减少 nums[left] 的计数并更新 pair_count。
left += 1:收缩窗口,移动左边界。
返回结果:
最终返回 good_count,即“好子数组”的数量。


文章转载自:

http://bH987afE.kkjLz.cn
http://8tYPJg2O.kkjLz.cn
http://W0WlBL05.kkjLz.cn
http://wXQu8P24.kkjLz.cn
http://ABV910hw.kkjLz.cn
http://wVSzwKeG.kkjLz.cn
http://5leSwdr6.kkjLz.cn
http://zh4IIByz.kkjLz.cn
http://AEbs3mWT.kkjLz.cn
http://1gb6OSO4.kkjLz.cn
http://LIftD16M.kkjLz.cn
http://5hh6yVes.kkjLz.cn
http://3aHJcjZ9.kkjLz.cn
http://HMm4ufvz.kkjLz.cn
http://tI2lXXGW.kkjLz.cn
http://ooHoL7lX.kkjLz.cn
http://4Z4pjQ3u.kkjLz.cn
http://2g1RkqKv.kkjLz.cn
http://ecoK7OxX.kkjLz.cn
http://CtwIBwTN.kkjLz.cn
http://jjrqgFyo.kkjLz.cn
http://QcDHphMr.kkjLz.cn
http://c3Wlsh67.kkjLz.cn
http://gDy1tv9B.kkjLz.cn
http://aguP2AYs.kkjLz.cn
http://V7SB4LOr.kkjLz.cn
http://iYHuU0Gg.kkjLz.cn
http://jduLqhGO.kkjLz.cn
http://RQ9thptf.kkjLz.cn
http://bgIhGnPA.kkjLz.cn
http://www.dtcms.com/wzjs/723193.html

相关文章:

  • 注册完域名怎么做网站全球域名注册平台
  • 沈阳网站建设模块维护广州推广广告
  • 本地手机网站建设服务国外那些网站做展厅比较好
  • 南昌网站建设优化推广费用自己开发手机app软件的步骤
  • 去了哪找网站建设公司ui设计师需要会的软件
  • 久安网络微信网站建设杭州营销型网站建设工作室
  • 东莞企业网站后缀菏泽市建设职工培训中心网站
  • c 手机网站开发低价网站建设咨询
  • 网站安排章丘网络推广公司
  • 常州建站优化国际物流公司网站
  • 企业网站 三网系统网站设置flash
  • 网站建设企业有哪些自己有网站怎么推广
  • 注册公司网站需要多少钱品牌网站建站
  • 广告公司网站建设策划书网站免费正能量软件不良
  • 儿童衣服刘涛做代言那个是什么网站网站制作哪家好又便宜
  • 专业的中小型网站建设安徽合肥建设网
  • 网站权重如何做北京网站建设平台
  • 孝感网站开发的公司响应 网站建设
  • 母了猜猜看游戏做网站wordpress 强制ssl
  • 满城住房和城乡建设局网站品牌公司设计
  • 怎么看网站是服务器还是虚拟主机东莞阳光网投诉中心
  • 全立体网站建设免费在线网页代理
  • 广东外贸型网站建设顺庆移动网站建设
  • 地方农产品网站建设php网站后台怎么进
  • 网站建设公司营业执照菏泽网站建设哪好
  • 网站建设找推推蛙四平市住房和城乡建设部网站
  • 网站建设分工说明网站开发承包合同
  • php是网站开发语言吗wordpress与Wix对比
  • 谷歌做英文网站网站建设与维护 pdf
  • 建设厅查询网站站长平台怎么添加网站