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

LeetCode每日一题4.24

2799. 统计完全子数组的数目

题目

在这里插入图片描述

问题分析

完全子数组 的定义:子数组中不同元素的数目等于整个数组不同元素的数目。
子数组 是数组中的一个连续非空序列。

思路

统计整个数组的不同元素数目:
使用 set 来获取整个数组的不同元素数目。
遍历所有子数组:
使用双指针或滑动窗口的方法来遍历所有可能的子数组。
检查每个子数组是否为完全子数组:
对于每个子数组,检查其不同元素的数目是否等于整个数组的不同元素数目。
计数完全子数组的数量:
如果某个子数组满足条件,则计数器加一。

代码

class Solution:def countCompleteSubarrays(self, nums: List[int]) -> int:# 获取整个数组的不同元素数目total_unique = len(set(nums))n = len(nums)count = 0# 遍历所有子数组for start in range(n):unique_elements = set()for end in range(start, n):unique_elements.add(nums[end])# 检查当前子数组是否为完全子数组if len(unique_elements) == total_unique:count += 1return count

复杂度分析

时间复杂度
该算法的时间复杂度为 (O(n^2)),其中 (n) 是数组的长度。这是因为我们需要遍历所有可能的子数组。
空间复杂度
空间复杂度为 (O(n)),因为在最坏情况下,unique_elements 集合的大小可能达到 (n)。

学习

total_unique: 整个数组的不同元素数目。
unique_elements: 当前子数组的不同元素集合。
count: 完全子数组的数量。

获取整个数组的不同元素数目:通过 set(nums) 获取并计算不同元素的数量。
遍历所有子数组:使用两层循环来生成所有可能的子数组。
检查每个子数组是否为完全子数组:对于每个子数组,检查其不同元素的数量是否等于整个数组的不同元素数量。
计数完全子数组的数量:如果某个子数组满足条件,则计数器加一。

相关文章:

  • 微高压氧舱VS高压氧舱:氧气疗法的“双生花”如何重塑健康?
  • 数据逆序隐写
  • 考研英一学习笔记
  • 倚光科技:详解非球面光学元件的加工与检测方法
  • Python并行计算:1.Python多线程编程详解:核心概念、切换流程、GIL锁机制与生产者-消费者模型
  • 探索 CameraCtrl模型:视频生成中的精确摄像机控制技术
  • XS5032芯片,开启视觉新体验
  • 什么是机器视觉3D碰撞检测?机器视觉3D碰撞检测是机器视觉3D智能系统中安全运行的核心技术之一
  • 题目:这不是字符串题
  • UML 活动图详解:以机票预订系统用户注册为例
  • 3dmax模型怎么处理3dtiles,制作制作B3DM格式文件
  • Linux操作系统--基础I/O(上)
  • 如何获取静态IP地址?完整教程
  • 第15章:MCP服务端项目开发实战:性能优化
  • 蓝桥杯 1. 四平方和
  • 深入详解人工智能数学基础——概率论中的贝叶斯深度学习
  • 今日行情明日机会——20250424
  • Python基础语法:字面量,注释,关键字,标识符,变量和引用,程序执行的3大流程
  • 指纹浏览器电商防关联功能深度解析:技术原理与实战应用
  • Docker 磁盘占用盘查和清理
  • 当哲学与戏剧作为一种生活方式——《人生六戏》分享会
  • 政企研合力,科学监测分析服务消费
  • 哲学家的生命终章:一场关于存在与消逝的深度对话
  • 基辅响起密集爆炸声,乌方称俄军发动大规模导弹袭击
  • 门票在“缩水”,古镇怎么办
  • 5旬辅警30余年前被人顶替上中专?河南沁阳:基本属实,将依法处理