给你一个由 正 整数组成的数组 nums 。

如果数组中的某个子数组满足下述条件,则称之为 完全子数组 :

子数组中 不同 元素的数目等于整个数组不同元素的数目。
返回数组中 完全子数组 的数目。

子数组 是数组中的一个连续非空序列。

示例 1:

输入:nums = [1,3,1,2,2]
输出:4
解释:完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2] 。
示例 2:

输入:nums = [5,5,5,5]
输出:10
解释:数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10 。

提示:

1 <= nums.length <= 1000
1 <= nums[i] <= 2000

滑动窗口,窗口内的元素符合完全子数组的数目时,加上窗口左边的元素的子数组也是完全子数组:

class Solution {
public:int countCompleteSubarrays(vector<int>& nums) {unordered_set<int> setNum(nums.begin(), nums.end());int wholeDiffNum = setNum.size();int curDiffNum = 0;unordered_map<int, int> cnt;int left = 0;int ans = 0;for (int i = 0; i < nums.size(); ++i) {if (++cnt[nums[i]] == 1) {++curDiffNum;}while (curDiffNum == wholeDiffNum) {if (--cnt[nums[left]] == 0) {--curDiffNum;}++left;}ans += left;}return ans;}
};

如果输入数组的大小为n,数组中的元素种类数为m,则此算法时间复杂度为O(n),空间复杂度为O(m)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86671.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86671.shtml
英文地址,请注明出处:http://en.pswp.cn/web/86671.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

33.表复制和去重

1.表结构的复制(LIKE) 当我们想复制一个表的时候&#xff0c;首先需要创建一个与被复制表相同结构的表。这时候就要用到关键字like&#xff1a; 语法使用&#xff1a; create table table_name LIKE temp_table 示例&#xff1a;复制一个和表emp&#xff08;老朋友了&#…

GitLab 18.1 正式发布Maven 虚拟仓库、密码泄露检测等功能,可升级体验!

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

蓝牙网络拓扑面试通关:微微网与散射网原理 + 真题解析

为什么面试官总爱问蓝牙拓扑? 你可能有过这样的经历:面试嵌入式 / 物联网 / 无线通信岗位时,面试官突然问:“蓝牙的微微网和散射网有什么区别?” 别慌!这不是在考你背定义,而是考察你对无线通信核心逻辑的理解 ——如何用有限资源实现高效组网。 蓝牙作为短距离无线通信…

[Python]-基础篇1- 从零开始的Python入门指南

无论你是尚未接触编程的新手,还是想从其他语言转向Python的开发者,这篇文章都是你的入门课。 一、Python是什么? Python是一种解释型、高级、通用型编程语言,以简洁明了、简单易用着称。它可以应用于网站开发、自动化脚本、数据分析、人工智能、系统操作等多种场景。 二、…

Objective-C面向对象编程:类、对象、方法详解(保姆级教程)

目录 一、核心概念 二、类的定义&#xff08;分.h和.m文件&#xff09; 1. 头文件&#xff08;.h&#xff09;—— 公开声明 2. 实现文件&#xff08;.m&#xff09;—— 具体实现 3. 属性特性解析 原子性 所有权语义(ARC环境下) 读写控制 三、对象创建与内存管理 1…

CentOS 7 编译ClickHouse 24.8完整指南

前言 在CentOS 7上编译ClickHouse 24.8可能会遇到一些挑战&#xff0c;主要是因为CentOS 7的默认软件版本较旧。本文将详细介绍从零开始构建ClickHouse 24.8的完整过程&#xff0c;包括依赖安装和环境配置。 准备工作 首先确保系统已更新到最新版本&#xff1a; yum update…

Protocol Buffers (Protobuf) 全面解析

一、核心概念解析 1. 什么是数据序列化&#xff1f; #mermaid-svg-HZKw9iRlpQIRFiO3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HZKw9iRlpQIRFiO3 .error-icon{fill:#552222;}#mermaid-svg-HZKw9iRlpQIRFiO3 .…

高斯混合模型GMMK均值(十三-1)——K均值是高斯混合模型的特例

EM算法与K均值算法的关系 K均值可以看成是高斯混合模型的特例。 对K均值算法与EM算法进行比较后&#xff0c;可以发现它们之间有很大的相似性。K均值算法将数据点硬&#xff08;hard&#xff09;分配到聚类中&#xff0c;每个数据点唯一地与一个聚类相关联&#xff0c;而EM算法…

StarRocks 向量索引如何让大模型“记性更好”?

随着 ChatGPT、DeepSeek 等大语言模型的普及&#xff0c;我们已经能够与 AI 进行流畅的对话。然而&#xff0c;即使是最先进的大模型也面临着“记忆困境”&#xff0c;具体表现模型只能记住训练时接触的知识&#xff0c;且这些知识在使用时很可能会过期。实际应用或在处理特定领…

UniApp Vue3 模式下实现页面跳转的全面指南

1. 引言 1.1 UniApp 与 Vue3 的结合优势 UniApp 是一个使用 Vue.js 开发所有前端应用的框架,支持编译到 iOS、Android、H5、以及各种小程序平台。Vue3 提供了更高效的响应式系统和 Composition API,使开发体验更加现代化和灵活。 1.2 页面跳转在应用开发中的重要性 页面跳…

Solidity学习 - ABI 应用二进制接口

文章目录 一、ABI 基础概念1. ABI 与 API 的区别2. ABI 的核心作用 二、ABI 接口描述1. 编译后的产物2. ABI JSON 格式示例3. ABI JSON 关键字段说明 三、ABI 编码1. 编码示例2. 编码数据的组成3. Solidity 中的编码函数 四、ABI 解码1. 解码的基本概念2. 事件日志的解码 五、A…

星际争霸数据集指南

星际争霸作为检验AI效果的一个重要“模式生物”, 是验证AI技术的重要平台‌&#xff0c;尤其在 深度学习 和 强化学习领域。该游戏因其复杂的游戏机制和实时决策要求&#xff0c;为AI研究提供了丰富的测试环境和挑战。 本博文是记录自己曾经研究星际争霸AI时对于数据部分的一点…

VUE组件与组件之间的传参

每次启动vue2项目的时候在 vue.config.js中配置&#xff1a; const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,//关闭语法严格检验lintOnSave:false})1&#xff1a;在 src 下 创建 utils 文件夹 然后创建 Bas…

8年java开发从零学习人工智能(深度学习)--pp飞桨(百度自研开源框架)

1.明确概念&#xff1a;人工智能>机器学习>深度学习&#xff0c;三者的关系是包含关系&#xff0c;如图所示&#xff1a; 人工智能&#xff08;AI&#xff09;&#xff0c;很宽泛的概念&#xff0c;是研发用于模拟&#xff0c;延展和扩展人的智能的理论&#xff0c;方法&…

ci | cd

ci | cd 相当于开发人员和运维人员共同完成的东西 ci:Jenkins cd:k8s ci &#xff1a; 持续集成 开发人员写出的代码提交到共享仓库 比如说Git 自动触发代码检查 测试 好处&#xff1a; 很快的发现bug 代码不用堆积 cd: 持续交付&#xff1a;代码测试没问题后 自动打包…

深入理解C#委托操作:添加、移除与调用全解析

关键词&#xff1a;委托不可变性 多播委托 调用列表管理 ⚙️ 一、委托的核心特性&#xff1a;不可变性 看似“添加”&#xff0c;实为新建 使用 为委托“添加”方法时&#xff08;如 delVar SCl.m3;&#xff09;&#xff1a; 系统创建全新委托对象新委托的调用列表 原…

Spring Cloud:微服务架构的基石与实践指南

一、Spring Cloud 核心组件 &#xff08;一&#xff09;Spring Cloud Netflix Spring Cloud Netflix 是 Spring Cloud 的核心模块之一&#xff0c;它集成了 Netflix 的多个开源组件&#xff0c;提供了微服务架构中常见的功能&#xff0c;如服务注册与发现、配置中心、API 网关…

【VPX3U】国产嵌入式平台:RK3588J×JH930硬件架构与红外应用方案

随着对边缘计算与多媒体处理需求的提升&#xff0c;国产异构平台成为关键发展方向。最近有一个项目需求&#xff0c;提出了一款基于瑞芯微 RK3588J 处理器与景嘉微GPU 的 VPX3U 规格嵌入式主板的设计想法旨在融合高性能异构计算与丰富的视频、网络和存储接口&#xff0c;适用于…

秩序密码-用群论分析魔方的阶

三阶魔方的物理基础是由一个三维十字轴连接的 6 个中心块&#xff0c;这 6 个中心块决定了魔方的 6 种颜色朝向&#xff0c;构成不动的坐标系统&#xff0c;此外还有两类活动块&#xff0c;分别是8个角块&#xff0c;12个棱块。 魔方的每一层转动&#xff08;如 R: 右层顺时针…

Python驱动自动驾驶的“多眼”——打造高效传感器融合框架的实战思考

Python驱动自动驾驶的“多眼”——打造高效传感器融合框架的实战思考 最近,自动驾驶行业火得不行,背后支撑它的技术,远不止车载摄像头那么简单。真正让车“看懂”世界的,是多种传感器数据的“融合”,包括雷达、激光雷达(LiDAR)、摄像头、惯性测量单元(IMU)等等。 而如…