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

力扣594:最和谐子序列

力扣594:最和谐子序列

  • 题目
  • 思路
  • 代码

题目

和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。

给你一个整数数组 nums ,请你在所有可能的 子序列 中找到最长的和谐子序列的长度。

数组的 子序列 是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。

思路

题目是需要我们找到一个符合最大值减最小值为1的子序列,大家要注意子序列的概念,子序列是不需要满足连续性的也不同于子数组我们不能对数组的顺序进行改变。所以我们可以对数组进行操作那么题目又说了是最大值和最小值,想更加方便的得到最大值和最小值以及好确定子序列我们就需要对数组进行排序。
在排序完成后,我们使用双指针来当作子序列的左右边界,接下来因为数组已经是升序的了我们只需要一边移动右边界一边判断右边界位置的值减去左边界位置的值和1的关系即可,如果大于1我们就需要移动左边界如果等于1我们就等于得到了一个符合条件的子序列。除此之外我们再定义一个整型res用来记录子序列的最大值即可,也就是每次得到符合条件的子序列都判断一次是res大还是子序列的长度大。
我们用到了双指针所以这又是一道基础的经典的滑动窗口的题目。

代码

class Solution {
public:int findLHS(vector<int>& nums) {sort(nums.begin(), nums.end());int end = 0;int begin = 0;int res = 0;while (end < nums.size()) {while (nums[end] - nums[begin] > 1) {begin++;}if (nums[end] - nums[begin] == 1) {res = max(res, end - begin + 1);}end++;}return res;}
};
http://www.xdnf.cn/news/18750.html

相关文章:

  • ViLU: Learning Vision-Language Uncertainties for Failure Prediction
  • Ubuntu 服务器无法 ping 通网站域名的问题解决备忘 ——通常与网络配置有关(DNS解析)
  • 2025年8月第3周AI资讯
  • AI Prompt 的原理与实战
  • assert使用方法
  • 人形机器人——电子皮肤技术路线:光学式电子皮肤及MIT基于光导纤维的分布式触觉传感电子皮肤
  • 基于Spring Cloud与Kafka的支付金融场景面试问答解析
  • Axure RP 9 交互原型设计(Mac 中文)
  • 十、redis 入门 之 redis事务
  • 理想汽车智驾方案介绍 2|MindVLA 方案详解
  • QT-布局管理器
  • 【Docker项目实战】使用Docker部署轻量级LetsMarkdown文本编辑器
  • Java基础第2天总结
  • [两数之和](哈希表做法)
  • 【Python】新手入门:为什么需要类型注解?如何使用Mypy进行静态类型检查?复杂类型注解语法是怎么样的?
  • JH-14回柱绞车优化设计cad+设计说明书+绛重
  • 攻防世界—Confusion1—(模板注入ssti)
  • ADC系统中的信噪比(SNR)
  • Python训练营打卡Day41-Grad-CAM与Hook函数
  • MySQL奔溃,InnoDB文件损坏修复记录
  • Codeforces Round 1043 (Div. 3)
  • 【Win10 画图板文字方向和繁体问题】
  • Python爬虫实战:构建港口物流数据采集和分析系统
  • 关于链式二叉树的几道OJ题目
  • 【Redis 进阶】----主从复制(重点理解流程和原理)
  • 【200页PPT】IT战略规划架构设计报告(附下载方式)
  • Linux服务器systemd服务配置详细指南
  • 《解构React Server Components:服务端序列化与流式传输的底层逻辑》
  • Redis优缺点
  • 可视化-模块1-HTML-01