[Algo/Programmers]java-K番号


[Algorithm/Programmers]java-K番号


問題プラットフォーム難易度タイプ解答リンク問題リンクK番目のプログラムレベル1 Sort に答える質問する

に答える



問題解決の手順は次のとおりです.
1.所与の配列arrayi번째 숫자부터 j번재 숫자까지を切り取り、
2.並んだ後、
3.k番目の整数を求める.
この順序でコマンドcommandsの2次元配列の長さを繰り返します.
public int[] solution(int[] array, int[][] commands) {
    int len = commands.length;

    int[] ans = new int[len];
    // command 수만큼 반복합니다.
    for (int i = 0; i < len; i++) {
        // slicing한 값을 넣어둘 임시 배열을 생성합니다.
        int[] temp = new int[commands[i][1] - commands[i][0] + 1];
        int idx = 0;

        // 1. 주어진 command대로 slicing합니다.
        for (int j = commands[i][0] - 1; j < commands[i][1]; j++) {
            temp[idx++] = array[j];
        }

        // 2. Slicing한 배열을 정렬합니다.
        Arrays.sort(temp);

        // 3. 해당 command 턴의 답(k번째수)를 ans배열에 넣습니다.
        ans[i] = temp[commands[i][2] - 1];

    }
    return ans;
}
問題は配列で簡単に解決した.
与えられた順序で解く限り,これは簡単な問題である.