-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy path594.LongestHarmoniousSubsequence(defaultdict).py
51 lines (42 loc) · 1.44 KB
/
594.LongestHarmoniousSubsequence(defaultdict).py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
'''
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:
Input: nums = [1,3,2,2,5,2,3,7]
Output: 5
Explanation: The longest harmonious subsequence is
[3,2,2,2,3].
Example:
Input: nums = [1,2,3,4]
Output: 2
Example:
Input: nums = [1,1,1,1]
Output: 0
Constraints:
- 1 <= nums.length <= 2 * 10^4
- -10^9 <= nums[i] <= 10^9
'''
#Difficulty: Easy
#206 / 206 test cases passed.
#Runtime: 424 ms
#Memory Usage: 16 MB
#Runtime: 424 ms, faster than 13.69% of Python3 online submissions for Longest Harmonious Subsequence.
#Memory Usage: 16 MB, less than 39.46% of Python3 online submissions for Longest Harmonious Subsequence.
from collections import defaultdict
class Solution:
def findLHS(self, nums: List[int]) -> int:
numbers = defaultdict(int)
result = 0
for num in nums:
numbers[num] += 1
for num in numbers.keys():
if num+1 in numbers.keys():
result = max(result, numbers[num] + numbers[num+1])
return result