Programming/leetcode

1148. Longest Harmonious Subsequence

홍열 2021. 2. 4. 23:51
728x90

문제 그대로 써보면 최소값과 최대값이 차이가 1이 나는 모음을 조화로운 배열이라고 한다. 

Input: nums = [1,3,2,2,5,2,3,7]

Output: 5

Explanation: The longest harmonious subsequence is [3,2,2,2,3].

 

Collections.Count로 출현 횟수를 세고, nums를 for문으로 돌면서 자기 자신을 최소값으로 하고

자신 +1을 최대값으로 가정해서 max값을 출력하면 된다.  

 

 

 

    def findLHS(self, nums: List[int]) -> int:
        dic = collections.Counter(nums)
        cnt = 0

        for num in nums:
            # num이 최솟값이고 +1 나는게 최댓값
            if num+1 in dic.keys():
                cnt = max(cnt, dic[num] + dic[num+1])
        return cnt

솔루션에는 brute-force방법도 있고, 나처럼 해쉬를 사용하는 방법도 있었다.

 

충분히 생각하고, 손으로 그려보고 하니까 한번에 코딩하고 한번에 submit 받았다.

기분이 좋구나,