코린이의 소소한 공부노트

[LeetCode/Easy] 594. Longest Harmonious Subsequence 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 594. Longest Harmonious Subsequence

무지맘 2023. 3. 7. 11:46

1. Input

1) int[] nums

 

2. Output

1) nums의 요소로 만들 수 있는 조화 부분배열의 길이 중 가장 긴 것을 반환

- 부분배열을 이루고 있는 요소들의 차가 정확히 1일 때 조화롭다고 표현한다.

 

3. Constraint

1) 1 <= nums.length <= 2 * 10^4

2) - 10^9 <= nums[i] <= 10^9

 

4. Example

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

Input: nums = [1,1,1,1] -> Output: 0

설명:

- 가장 긴 조화 부분배열은 [3,2,2,2,3]이다.

- 모든 요소의 차가 0이기 때문에 조화 부분배열을 만들 수 없다.

 

5. Code

1) 첫 코드(2023/03/07)

int answer = 0;
HashMap<Integer,Integer> m = new HashMap<Integer,Integer>();
for(int i : nums)
    m.put(i, m.getOrDefault(i,0)+1);
Iterator it = m.entrySet().iterator();
while(it.hasNext()){
    Map.Entry e = (Map.Entry)it.next();
    int n = (int)e.getKey();
    int a = m.getOrDefault(n-1,0), b = a = m.getOrDefault(n+1,0);
    if(a!=0 && b!=0)
        answer = Math.max(answer, Math.max(a,b)+(int)e.getValue());
}     
return answer;