プログラマレベル1-5|アレイのコピーとソート
java.util.Arrays Classの学習
java.util.Arraysユーティリティクラスは、アレイのソート、コピー、リストへの変換などのタスクを容易にします.Arraysクラスのすべてのメソッドはクラスメソッド(static method)であり、オブジェクトを作成することなく使用できます.
copyOfRange(arr,n 1,n 2)メソッド
sort(arr)法
質問する
配列のi番からj番までを切り取って並べ替えると、k番目の数字を求めようとします.
例えばarrayが[1,5,2,6,3,7,4],i=2,j=5,k=3の場合
arrayの2番目から5番目の場合は[5,2,6,3].
1の配列を並べ替えると[2,3,5,6].
2からの配列の3番目の数字は5です.
配列配列、[i、j、k]を要素とする2次元配列コマンドをパラメータとして与える場合は、commandsのすべての要素に前述の演算を適用した結果を配列に戻してsolution関数を作成します.
コード#コード#
static int[] solution(int[] array, int[][] commands) {
int[] answer = {};
int[] arr = {};
answer = new int[commands.length];
for (int i = 0; i < commands.length; i++) {
int num = commands[i][1] - commands[i][0] + 1;
arr = new int[num];
int cnt = 0;
for (int j = commands[i][0] - 1; j < commands[i][1]; j++) {
arr[cnt++] = array[j];
}
int temp = 0;
for (int j = 0; j < arr.length - 1; j++) {
for (int y = j + 1; y < arr.length; y++) {
if (arr[j] > arr[y]) {
temp = arr[j];
arr[j] = arr[y];
arr[y] = temp;
} // if end
} // for end
} // for end
answer[i] = arr[commands[i][2] - 1];
}
return answer;
}
これは私が解いたもので、arraysクラスの方法で簡単に解くことができます.Arraysメソッドを使用したコード
static int[] solution2(int[] array, int[][] commands) {
int[] answer = {};
answer = new int[commands.length];
for (int i = 0; i < commands.length; i++) {
int[] temp = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
Arrays.sort(temp);
answer[i] = temp[commands[i][2] - 1];
}
return answer;
}
注1)https://norwayy.tistory.com/85 注2)https://ifuwanna.tistory.com/232
Reference
この問題について(プログラマレベル1-5|アレイのコピーとソート), 我々は、より多くの情報をここで見つけました https://velog.io/@yuriyaam/코딩-13.-배열의-복사와-정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol