594. Longest Harmonious Subsequence
Description
We define a harmonious array as an array where the difference between its maximum value and its minimum value is exactly 1
.
Given an integer array nums
, return the length of its longest harmonious among all its possible subsequences.
Example 1:
Input: nums = [1,3,2,2,5,2,3,7]
Output: 5
Explanation:
The longest harmonious subsequence is [3,2,2,2,3]
.
Example 2:
Input: nums = [1,2,3,4]
Output: 2
Explanation:
The longest harmonious subsequences are [1,2]
, [2,3]
, and [3,4]
, all of which have a length of 2.
Example 3:
Input: nums = [1,1,1,1]
Output: 0
Explanation:
No harmonic subsequence exists.
Constraints:
1 <= nums.length <= 2 * 104
-109 <= nums[i] <= 109
Solutions
Solution: Hash Map
- Time complexity: O(n)
- Space complexity: O(n)
JavaScript
js
/**
* @param {number[]} nums
* @return {number}
*/
const findLHS = function (nums) {
const countMap = new Map();
let result = 0;
for (const num of nums) {
const count = countMap.get(num) ?? 0;
countMap.set(num, count + 1);
}
for (const [num, count] of countMap) {
if (!countMap.has(num + 1)) continue;
const totalCount = count + countMap.get(num + 1);
result = Math.max(totalCount, result);
}
return result;
};