[LeetCode] Longest Harmonious Subsequence

아르당·5일 전

LeetCode

목록 보기
128/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

우리는 최댓값과 최솟값의 차이가 정확히 1인 배열을 조화로운 배열로 정의한다.
정수 배열 nums가 주어졌을 때, 가능한 모든 부분 수열 중에서 가장 긴 조화로운 부분 수열의 길이를 반환해라.

Example

#1
Input: nums = [1, 3, 2, 2, 5, 2, 3, 7]
Output: 5
Explanation: 가장 긴 조화로운 부분 수열은 [3, 2, 2, 2, 3]이다.

#2
Input: nums = [1, 2, 3, 4]
Output: 2
Explanation: 가장 긴 조화루운 부분 수열은 [1, 2], [2, 3], [3, 4]이고, 모두의 길이는 2이다.

#3
Input: nums = [1, 1, 1, 1]
Output: 0
Explanation: 조화로운 부분 수열이 존재하지 않는다.

Constraints

  • 1 <= nums.length <= 2 * 10^4
  • -10^9 <= nums[i] <= 10^9

Solved

class Solution {
    public int findLHS(int[] nums) {
        HashMap<Integer, Integer> freq = new HashMap<>();

        for(int num : nums){
            freq.put(num, freq.getOrDefault(num, 0) + 1);
        }

        int result = 0;

        for(int num : freq.keySet()){
            if(freq.containsKey(num + 1)){
                result = Math.max(result, freq.get(num) + freq.get(num + 1));
            }
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글