赞
踩
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。
现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。
示例 1:
输入: [1,3,2,2,5,2,3,7]
输出: 5
原因: 最长的和谐数组是:[3,2,2,2,3].
说明: 输入的数组长度最大不超过20,000.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-harmonious-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
一个循环内,每次添加元素时,检查比当前元素大一或小一的个数中的较大者,加上当前元素的数量更新res。
class Solution { public: int findLHS(vector<int>& nums) { unordered_map<int, int>mp; int res = 0; for (int i : nums) { mp[i]++; if (mp[i+1]!=0) res = max(res, mp[i] + mp[i+1]); if (mp[i-1]!=0) res = max(res, mp[i] + mp[i-1]); } return res; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。