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

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

http://www.xdnf.cn/news/1570.html

相关文章:

  • 硬核解析!电动汽车能耗预测与续驶里程的关键技术研究
  • 多模态大模型 Qwen2.5-VL 的学习之旅
  • 立錡科技优化 HDD、LPDDR、SoC 供电的高性能降压转换器
  • 6 种AI实用的方法,快速修复模糊照片
  • 负环-P3385-P2136
  • 让Docker端口映射受Firewall管理而非iptables
  • LVGL在VScode的WSL2中仿真
  • R 语言科研绘图第 41 期 --- 桑基图-基础
  • .NET Framework 4.0可用EXCEL导入至DataTable
  • centos7的环境下ollama 如何卸载
  • 【Linux网络】应用层自定义协议与序列化及Socket模拟封装
  • 第十五届蓝桥杯 2024 C/C++组 拼正方形
  • 深度对比评测:n8n vs Coze(扣子) vs Dify - 自动化工作流工具全解析
  • 详解Linux中的定时任务管理工具crond
  • 基于STM32的汽车主门电动窗开关系统设计方案
  • 系统与网络安全------弹性交换网络(2)
  • Sass的学习
  • 识别图片内容OCR并重命名文件
  • 中心极限定理(CLT)习题集 · 答案与解析篇
  • 【前端】手写代码输出题易错点汇总
  • 【FAQ】PCoIP 会话后物理工作站本地显示器黑屏
  • 60个GitLab CI/CD 面试问题和答案
  • Ubuntu 一站式部署 RabbitMQ 4 并“彻底”迁移数据目录的终极实践
  • 2025.04.24【3D】3D绘图入门指南
  • 直接偏好优化(Direct Preference Optimization,DPO):论文与源码解析
  • playwright 免API实现kimi聊天机器人
  • 题解:CF2072F Goodbye, Banker Life
  • 经颅超声刺激设备的技术指标简析
  • vue3:十一、主页面布局(修改顶部导航栏样式-右侧:用户信息+退出登录+全屏显示)
  • 【计算机视觉】CV实战项目 - 基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化