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

力扣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.dtcms.com/a/348016.html

相关文章:

  • 客流特征识别误报率↓76%!陌讯多模态时序融合算法在智慧零售的实战解析
  • Tesla智能座舱域控制器(MCU)的系统化梳理
  • 【网络运维】Shell 脚本编程:if 条件语句
  • 【40页PPT】数字工厂一体化运营管控平台解决方案(附下载方式)
  • Spark04-MLib library01-机器学习的介绍
  • SNMP 协议的总结
  • 每日算法题【链表】:相交链表、环形链表、环形链表II
  • 鸿蒙分布式计算实战:用 ArkTS+Worker 池落地可运行任务管理 Demo,从单设备到跨设备全方案
  • [二维前缀和]1277. 统计全为 1 的正方形子矩阵
  • HarmonyOS实战(DevEco AI篇)—深度体验DevEco CodeGenie智能编程助手
  • Function + 枚举 + Map:轻量路由器的最佳实践
  • ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.24.96‘ (10060)
  • 基于Java、GeoTools与PostGIS的对跖点求解研究
  • 大数据毕业设计选题推荐:基于Spark+Django的学生创业数据分析可视化系统详解 毕业设计/选题推荐/深度学习/数据分析/数据挖掘/机器学习/随机森林
  • 网络编程socket-Udp
  • Linux网络启程
  • Java基础(十四)分布式
  • 《Distilling the Knowledge in a Neural Network》论文PDF分享, 2015 年,谷歌提出了 “知识蒸馏” 的概念
  • 深入解析Apache Kafka的核心概念:构建高吞吐分布式流处理平台
  • 07-分布式能力与多设备协同
  • Lucene 与 Elasticsearch:从底层引擎到分布式搜索平台的演进
  • Flink提交作业
  • (Redis)内存淘汰策略
  • Elastic APM vs Apache SkyWalking vs Pinpoint:APM性能监控方案对比分析与最佳实践
  • 深度学习之第二课PyTorch与CUDA的安装
  • 华为云Stack环境中计算资源,存储资源,网络资源发放前的准备工作(上篇)
  • 【软考架构】云计算相关概念
  • 嵌入式系统bringup通用流程
  • SpringBoot的学生学习笔记共享系统设计与实现
  • 鸿蒙中应用闪屏解决方案