Skip to content

Commit 013d2ab

Browse files
committed
feat: Solve longest harmonius subsequence
- Leetcode, #594
1 parent c84fd19 commit 013d2ab

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

longest-harmonius-subsequence.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* Leetcode, #594
3+
*
4+
* We define a harmounious array as an array where the difference between its
5+
* maximum value and its minimum value is exactly 1.
6+
*
7+
* Now, given an integer array, you need to find the length of its longest
8+
* harmonious subsequence among all its possible subsequences.
9+
*
10+
* Constraints:
11+
* 1. The length of the input array will not exceed 20,000.
12+
*/
13+
14+
/**
15+
* @param {number[]} nums
16+
* @return {number}
17+
*/
18+
function findLHS(nums) {
19+
let longest = 0;
20+
if (nums.length > 1) {
21+
const map = new Map();
22+
nums.forEach(number => {
23+
const cValue = map.has(number) ? map.get(number) + 1 : 1;
24+
map.set(number, cValue);
25+
if (map.has(number + 1)) {
26+
longest = Math.max(longest, cValue + map.get(number + 1));
27+
}
28+
if (map.has(number - 1)) {
29+
longest = Math.max(longest, cValue + map.get(number - 1));
30+
}
31+
});
32+
}
33+
return longest;
34+
};

0 commit comments

Comments
 (0)