Welcome to Subscribe On Youtube
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 subsequence among all its possible subsequences.
A subsequence of array is a sequence that can be derived from the array by deleting some or no elements without changing the order of the remaining elements.
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
Example 3:
Input: nums = [1,1,1,1] Output: 0
Constraints:
1 <= nums.length <= 2 * 104
-109 <= nums[i] <= 109
Solutions
-
class Solution { public int findLHS(int[] nums) { Map<Integer, Integer> counter = new HashMap<>(); for (int num : nums) { counter.put(num, counter.getOrDefault(num, 0) + 1); } int ans = 0; for (int num : nums) { if (counter.containsKey(num + 1)) { ans = Math.max(ans, counter.get(num) + counter.get(num + 1)); } } return ans; } }
-
class Solution { public: int findLHS(vector<int>& nums) { unordered_map<int, int> counter; for (int num : nums) { ++counter[num]; } int ans = 0; for (int num : nums) { if (counter.count(num + 1)) { ans = max(ans, counter[num] + counter[num + 1]); } } return ans; } };
-
class Solution: def findLHS(self, nums: List[int]) -> int: counter = Counter(nums) ans = 0 for num in nums: if num + 1 in counter: ans = max(ans, counter[num] + counter[num + 1]) return ans
-
func findLHS(nums []int) int { counter := make(map[int]int) for _, num := range nums { counter[num]++ } ans := 0 for _, num := range nums { if counter[num+1] > 0 { ans = max(ans, counter[num]+counter[num+1]) } } return ans }
-
function findLHS(nums: number[]): number { const cnt: Record<number, number> = {}; for (const x of nums) { cnt[x] = (cnt[x] || 0) + 1; } let ans = 0; for (const [x, c] of Object.entries(cnt)) { const y = +x + 1; if (cnt[y]) { ans = Math.max(ans, c + cnt[y]); } } return ans; }