1. 程式人生 > >【python3】leetcode 594. Longest Harmonious Subsequence(easy)

【python3】leetcode 594. Longest Harmonious Subsequence(easy)

594. Longest Harmonious Subsequence(easy)

We define a harmonious array is an array where the difference between its maximum value and its minimum value is exactly 1.

Now, given an integer array, you need to find the length of its longest harmonious subsequence among all its possible 

subsequences.

Example 1:

Input: [1,3,2,2,5,2,3,7]
Output: 5
Explanation: The longest harmonious subsequence is [3,2,2,2,3].

 

Note: The length of the input array will not exceed 20,000.

 使用hashmap儲存每個數出現的次數

相減為1說明只能是相鄰2個數組成的串,而每個數可能存在左右2個相鄰數字,這時就要比較哪個比較大

class Solution:
    def findLHS(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
    
        count = collections.Counter(nums)
        ll = 0;lr=0;lf=0;
        setnum = set(nums)
        for key,val in count.items():
            l = val
            if (key + 1) in setnum:
                lr = l + count[key+1]
            if (key - 1) in setnum:
                lf = l +  count[key-1]
            l = max(lf,lr)
            ll = max(ll,l)         
        return ll