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

LeetCode 594. 最长和谐子序列

对于子序列问题,首先想到排序+滑动窗口。

代码如下:

class Solution {
public:int findLHS(vector<int>& nums) {sort(nums.begin(), nums.end());int n = nums.size(), ans = 0;int i = 0, j = 0;while(j<n){while(i<j && nums[j] - nums[i] > 1) i++;// 保持窗口 [i..j] 内最大值与最小值之差 ≤ 1if(nums[j] - nums[i] == 1) ans = max(ans, j - i + 1);// 符合条件则更新 ansj++;}return ans;}
};

关于这题还有一种思路。我们可以观察到,满足条件的子序列都仅含有 i 和 i+1 两种数字,那么我们可以考虑统计每个数字的出现频次 cnt ,遍历 cnt ,令 ans = max(ans, cnt[i] + cnt[i+1])。

代码如下:

class Solution {
public:int findLHS(vector<int>& nums) {map<int, int> mp; // 记录频次for(auto i : nums){mp[i]++;}int ans = 0;for(auto i : mp){if(mp.contains(i.first+1)){ans = max(ans, i.second+mp[i.first+1]);}}return ans;}
};

http://www.lqws.cn/news/586027.html

相关文章:

  • if __name__ == ‘__main__‘:
  • 【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(三)
  • IDEA相关配置记录
  • 对selenium进行浏览器和驱动进行配置Windows | Linux
  • 【机器学习第四期(Python)】LightGBM 方法原理详解
  • Excel Report
  • Photoshop 插件 NBP Freqsep Control 2.0 安装全流程
  • C++ Programming Language —— 第4章:程序流程结构
  • 【启发式算法】Dynamic A*(D*)算法详细介绍(Python)
  • 「Java流程控制」while循环
  • 3.前端和后端参数不一致,后端接不到数据的解决方案
  • Redis 和 Mysql 如何保证数据一致性
  • [Python 基础课程]变量
  • 如何通过SSL证书配置防止源站IP泄露 - 全面防护指南
  • 源码包安装haproxy(rocky8)
  • Kafka 核心机制面试题--自问自答
  • 本地部署kafka4.0
  • PHP中的异常处理try-catch语句
  • Franka机器人赋能RoboCulture研究,打造生物实验室智能解决方案
  • 【科研绘图系列】R语言绘制世界地图分布(world map)
  • 炸鸡派-基础测试例程
  • AdGuard Home 安装及使用
  • 插入排序的简单介绍
  • 在 VS Code 中安装与配置 Gemini CLI 的完整指南
  • 第28篇:深入解析OpenEuler 24.03中的PAM认证机制:从原理到实践
  • 面向安全产品测试的静态混淆型 Shellcode Loader 设计与对抗分析
  • react经验:在nextjs中使用motion组件
  • 设计模式-访问者模式
  • PHP WebSocket服务器搭建指南
  • 深度学习03 人工神经网络ANN