网站建设 设备,app开发公司选择技巧,广州市建设网站,莱芜网站建设自助建站优化594. 最长和谐子序列#xff08;简单#xff09; 方法#xff1a;哈希表计数
思路
题目规定的「和谐子序列」中的最值差值正好为 1#xff0c;因而子序列排序后必然符合[a,a,.., a 1,a1]形式#xff0c;即符合条件的和谐子序列长度为相邻两数(差值为 1)的出现次数之和。…594. 最长和谐子序列简单 方法哈希表计数
思路
题目规定的「和谐子序列」中的最值差值正好为 1因而子序列排序后必然符合[a,a,.., a 1,a1]形式即符合条件的和谐子序列长度为相邻两数(差值为 1)的出现次数之和。因此我们首先对 nums 各元素的出现次数计数之后再次遍历如果存在比该元素小 1 的元素说明这两个元素会形成和谐子序列此时将二者的出现次数相加即为可能的答案之一。最后将最佳答案与可能答案相比较较大者更新为最佳答案。
代码
class Solution {
public:int findLHS(vectorint nums) {unordered_mapint, int mp;int ans 0;for (int n : nums){if(mp.find(n) mp.end()){mp.insert({n, 1});}else mp[n];}for(auto m : mp){if(mp.find(m.first - 1) ! mp.end()){ans max(ans, m.second mp[m.first - 1]);}}return ans;}
};