当前位置: 首页 > 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.dtcms.com/a/262748.html

相关文章:

  • 关于 java:8. Java 内存模型与 JVM 基础
  • 汇编基础介绍——ARMv8指令集(四)
  • 【c/c++1】数据类型/指针/结构体,static/extern/makefile/文件
  • 【c/c++3】类和对象,vector容器,类继承和多态,systemd,stdboost
  • Ragflow本地部署和基于知识库的智能问答测试
  • 机器学习在智能电网中的应用:负荷预测与能源管理
  • 【鸿蒙中级】
  • 面试复盘6.0
  • 「Java案例」输出24个希腊字母
  • 深入理解 Dubbo 负载均衡:原理、源码与实践
  • Redis Cluster Gossip 协议
  • 指针篇(6)- sizeof和strlen,数组和指针笔试题
  • 免费SSL证书一键申请与自动续期
  • MySQL-复合查询
  • 暴力风扇方案介绍
  • AlpineLinux安装部署MariaDB
  • 微信小程序接入腾讯云短信验证码流程
  • 用户行为序列建模(篇十)-【加州大学圣地亚哥分校】SASRec
  • 在Linux系统中部署Java项目
  • Unity Catalog 三大升级:Data+AI 时代的统一治理再进化
  • Re:从0开始的 空闲磁盘块管理(考研向)
  • HybridCLR热更新实例项目及改造流程
  • 人工智能之数学基础:如何判断正定矩阵和负定矩阵?
  • JVM基础--JVM的组成
  • Transformer超详细全解!含代码实战
  • Java面试宝典:基础三
  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • 用户行为序列建模(篇七)-【阿里】DIN
  • Linux下基于C++11的socket网络编程(基础)个人总结版
  • 学习日志02 ETF 基础数据可视化分析与简易管理系统