【C++刷题】力扣-#594-最长和谐子序列

题目描述

和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。
给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的 子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。

示例

示例 1

输入:nums = [1,3,2,2,5,2,3,7]
输出:5
解释:
最长和谐子序列是 [3,2,2,2,3]

示例 2

输入:nums = [1,2,3,4]
输出:2
解释:
最长和谐子序列是 [1,2][2,3][3,4],长度都为 2

示例 3

输入:nums = [1,1,1,1]
输出:0
解释:
不存在和谐子序列。

题解

  1. 统计每个数字的出现次数:使用哈希表 countMap 来统计 nums 中每个数字的出现次数。
  2. 寻找和谐子序列:遍历哈希表中的每个数字,对于每个数字 num,检查 num + 1 是否也存在于哈希表中。如果存在,则说明找到了一个长度至少为2的和谐子序列。将这两个数字的出现次数相加,得到这个子序列的长度,并更新最长和谐子序列的长度。
  3. 返回结果:返回计算出的最长和谐子序列的长度。

代码实现

int findLHS(vector<int>& nums) {unordered_map<int, int> countMap;unordered_set<int> numSet;// 统计每个数字的出现次数并存储在集合中for (int num : nums) {countMap[num]++;numSet.insert(num);}int maxLength = 0;// 遍历集合中的数字,找到最大值和最小值相差为1的两个值for (int num : numSet) {if (numSet.find(num + 1) != numSet.end()) {// 计算子序列的长度int length = countMap[num] + countMap[num + 1];maxLength = max(maxLength, length);}}return maxLength;
}

复杂度分析

● 时间复杂度:O(n),其中 n 是数组 nums 的长度。我们需要遍历一次数组来构建哈希表和集合,然后遍历集合中的每个元素来计算子序列的长度。
● 空间复杂度:O(n),用于存储哈希表和集合。
这个算法的优势在于它直接使用哈希表来统计数字的出现次数,并通过一次遍历来找到最长和谐子序列的长度。这种方法简单且高效,适用于处理大数据集。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

124.WEB渗透测试-信息收集-ARL(15)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;123.WEB渗透测试-信息收集-ARL&#xff08;14&#xff09; 点击fofa任务下发&#xff08…

Linux命令 - 关于命令及其使用

文章目录 1 什么是命令&#xff1f;2 识别命令3 命令帮助文档4 命令别名 1 什么是命令&#xff1f; 命令可以是以下四种形式之一&#xff1a; 可执行程序&#xff1a;就像我们所看到的位于/usr/bin目录中的文件一样&#xff0c;这一类程序可以是用诸如C和C语言编写的程序编译…

【万字详文介绍】:迭代扩张卷积神经网络(IDCNN)

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

220V变5V300mA非隔离芯片WT5104

220V变5V300mA非隔离芯片WT5104 WT5104特点包括&#xff1a; - 宽输入电压&#xff1a;85VAC~265VAC&#xff0c;适应全球电网电压波动。 - 输出规格&#xff1a;稳定5V直流电&#xff0c;最大电流500mA&#xff0c;适用于轻功率电子设备。 - 工作模式灵活&#xff1a;支持CCM…

WonderWorld: Interactive 3D Scene Generation from a Single Image 论文解读

目录 一、概述 二、相关工作 1、新视图生成 2、单视图3D场景生成 3、视频生成 4、快速的3D场景表示 三、WonderWorld 1、FLAGS表示 2、引导深度扩散模块 3、单视角层次生成 4、基于几何的初始化 surfel表示 5、阶段一——生成3D场景部分 6、阶段二——用户交互控…

kkfileview4.2.1 LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz

问题 java.lang.IllegalStateException: officeHome doesnt exist or is not a directory: optlibreoffice7.1 安装 kkfileview4.2.1 LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz 测试 全过程脚本 [zengwenfenglocalhost Desktop]$ pwd /home/zengwenfeng/Desktop [zengwe…

可编辑71页PPT | 企业架构及典型设计方案

荐言分享&#xff1a;企业架构&#xff08;Enterprise Architecture, EA&#xff09;是战略与技术之间的桥梁&#xff0c;旨在确保企业的信息系统、业务流程、组织结构和技术基础设施能够协同工作&#xff0c;以支持企业的整体战略目标。它通过定义一套标准化的框架、原则、模型…

python代码获取zabbix上机器磁盘使用率

1.需要先给机器打上标记os_type: Linux或者os_type: Windows 2.代码请求获取数据&#xff1a; 先装一下相关的数据包 pip install pyzabbix from pyzabbix import ZabbixAPI import requests import urllib3 import concurrent.futuresclass ZabbixInfo():def __init__(self…

一个完整的crm系统都应该具备哪些功能?CRM系统功能盘点

前段时间我们去拜访一位企业老板&#xff0c;正好他们在开会&#xff0c;团队正在讨论如何与一位潜在的大客户达成交易。 客户对产品表现出浓厚的兴趣&#xff0c;也提出了一些具体的问题&#xff0c;例如上一次交易的详细信息、服务响应时间以及可能的折扣方案&#xff0c;但…

导师双选系统开发:Spring Boot技术详解

第一章 绪论 1.1 选题背景 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;尽管身边每时每刻都在产生大量信息&#xff0c;这些信息也都会在短时间内得到处理&#xff0c;并迅速传播。因为很多时候&#xff0c;管理层决策需要大量信…

CTF顶级工具与资源

《Web安全》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484238&idx1&snca66551c31e37b8d726f151265fc9211&chksmc0e47a12f793f3049fefde6e9ebe9ec4e2c7626b8594511bd314783719c216bd9929962a71e6&scene21#wechat_redirect 《网安面试指南》h…

数列分块入门

本期是数列分块入门。其中的大部分题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:here (其实是对之前分块的 blog 的整理补充) sto hzwer orz %%% [转载] ---------------------------------------------------------------------------------…

模型自动绑骨,在线生成动画,神奇的网站《Mixamo》

英文名mixamo 网站地址&#xff1a;Mixamohttps://www.mixamo.com/#/首先进入需要注册&#xff0c;国内的手机号就可以&#xff0c;但是会有一些慢&#xff0c;多试几次 1、进入界面如下 2、载入自己的模型 2、绑定骨骼 拖动这几个有颜色的圈圈分别对应右图位置&#xff0c;点…

2024 CSS保姆级教程四

CSS中的动画 CSS动画&#xff08;CSS Animations&#xff09;是为层叠样式表建议的允许可扩展标记语言&#xff08;XML&#xff09;元素使用CSS的动画的模块​ 即指元素从一种样式逐渐过渡为另一种样式的过程​ 常见的动画效果有很多&#xff0c;如平移、旋转、缩放等等&#…

Docker安装anythingllm

拉镜像 docker pull mintplexlabs/anythingllm 启动 anythingllm docker run -d --name anythingllm --add-hosthost.docker.internal:host-gateway --env STORAGE_DIR/app/server/storage --health-cmd "/bin/bash/usr/local/bin/docker-healthcheck.sh || exit 1"…

格行:从新晋网红到国货之光,它究竟做对了什么?

作为一家迅速崛起的新消费品牌&#xff0c;近两年来&#xff0c;格行饱受质疑。 无论是商家还是消费者&#xff0c;都有人对其爱之恨之&#xff0c;喜欢它的人&#xff0c;认为它是正义的化身&#xff0c;价格的屠夫&#xff0c;国货的骄傲&#xff0c;原本需要花几百才能买到…

小菜家教平台(二):基于SpringBoot+Vue打造一站式学习管理系统

目录 前言 今日进度 详细过程 一、数据库重构 二、编写登录接口 相关知识点 前言 昨天我们重启了小菜家教平台的开发&#xff0c;创建了新项目并初步进行了配置&#xff0c;今天我们继续。大家要是有需要源码的话可以在评论区跟我说&#xff0c;博客中就不添加源码了~ 今…

数学期望和联合概率密度

数学期望的定义 数学期望是描述随机变量平均趋势的一个重要统计量。根据随机变量的类型&#xff08;离散或连续&#xff09;&#xff0c;数学期望的定义有所不同。 离散型随机变量的数学期望&#xff1a; 若离散型随机变量 X X X取值为 x 1 , x 2 , … , x n , … x_1,x_2,\do…

MRCTF2020:你传你ma呢

文件上传题先判断黑白名单过滤&#xff0c;先传个最简单的木马 这里上传不了php文件&#xff0c;猜测可能是对php文件进行了过滤&#xff0c;将文件改为任意后缀这里改为.abc 还是上传不成功&#xff0c;猜测可能对MIME也做了过滤&#xff0c;将Content-Type更改为image/jpeg再…

Harmony项目基础

项目基础 开发环境 DevEco Stuio下载和安装 DevEco Studio下载 下载链接:https://developer.huawei.com/consumer/cn/deveco-studio/ 安装IDE 直接运行安装文件即可 配置SDK及工具链 DevEco Studio 提供 SDK Manager 统一管理 SDK 及工具组件&#xff0c;包括如下组件包&…