05 August 2008
矩阵中按照左上右下的对角线排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int[][] diagonalSort(int[][] A) {
int m = A.length, n = A[0].length;
HashMap<Integer, PriorityQueue<Integer>> d = new HashMap<>();
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
d.putIfAbsent(i - j, new PriorityQueue<>());
d.get(i - j).add(A[i][j]);
}
}
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
A[i][j] = d.get(i - j).poll();
return A;
}
}