[LeetCode] Rank Transform of an Array Java

dustle·2023년 5월 18일
1

Rank Transform of an Array

주어진 배열을 가장 작은 수 부터 랭크를 매겨서 반환하는 문제입니다.

깊은 복사로 주어진 배열의 복사본을 만들어 정렬하고 Map 에 <배열 숫자, 랭크> 로 만들어 저장했습니다.
새 배열에 arr 에 저장된 순서대로 Map 에서 값을 가져와 저장하고 반환했습니다.

import java.util.*;

class Solution {
    Map<Integer, Integer> map = new HashMap<>();
    public int[] arrayRankTransform(int[] arr) {

        int[] copy = arr.clone(); 
        Arrays.sort(copy);

        int rank = 1;
        for(int i = 0; i < copy.length; i++) {
            if(!map.containsKey(copy[i])) {
                map.put(copy[i], rank++);
            }
        }

        int[] answer = new int[arr.length];
        for(int i = 0; i < arr.length; i++) {
            answer[i] = map.get(arr[i]);
        }

        return answer;
    }
}

0개의 댓글