Matrix Cells in Distance Order
给一个点,按照曼哈顿距离排序所有矩阵上的点。讨论中直接sort的都是耍流氓-_-
class Solution {
public int[][] allCellsDistOrder(int R, int C, int r0, int c0) {
int[][] d = {{0, 1}, {1, 0},{0, -1}, {-1, 0}};
int[][] res = new int[R*C][2];
int count = 0;
Queue<int[]> q = new LinkedList<int[]>();
Set<String> check = new HashSet<String>();
q.add(new int[]{r0, c0});
check.add(r0+"|"+c0);
while(!q.isEmpty()) {
int[] t = q.poll();
res[count++] = t;
for(int i = 0 ; i < d.length; i++) {
int newR = t[0]+d[i][0];
int newC = t[1]+d[i][1];
if(newR < R && newR>=0 && newC < C && newC>=0 && !check.contains(newR+"|"+newC)){
q.add(new int[]{newR, newC});
check.add(newR+"|"+newC);
}
}
}
return res;
}
}