整数 n, m, k と n 行 m 列の表 a が与えられます。以下の条件をすべて満たすように、 a を行単位でソートしてください。
・ a の k 列目が昇順になっている
・ a の k 列目の値が等しい 2 つの行では、 a の 1 列目の値が昇順になっている
・ a の k 列目 と a の 1 列目から i 列目までのすべての値が等しい 2 つの行では、 a の i + 1 列目の値が昇順になっている ( 1 ≦ i ≦ m - 1 )
プログラミングで配列やlistをソートする機会は頻繁にあり、Pythonでソートするのは便利なsort()があり、そんなに難しくありません。
Comparator<Integer[]> comparator = new Comparator<Integer[]>() {
@Override
public int compare(Integer[] i1, Integer[] i2) {
int result = 0;
int j = 0;
while(j<m && result==0){
result = i1[j]-i2[j];
j++;
}
return result;
}
};
もし、k番目だけをソートしたいときは、Comparatorをインスタンス化せず、以下の書き方でソートすると良いでしょう。
Arrays.sort(a, (i1, i2) -> i1[k-1] - i2[k-1]);