题目链接
解题思路
暴力法 首先存储矩阵内所有的点,然后将其按照哈曼顿距离直接排序
AC代码
class Solution {
public int [ ] [ ] allCellsDistOrder ( int R, int C, int r0, int c0) {
int index = 0 ;
int [ ] [ ] ans = new int [ R * C] [ 2 ] ;
for ( int i = 0 ; i < R; i++ ) {
for ( int j = 0 ; j < C; j++ ) {
ans[ index] [ 0 ] = i;
ans[ index++ ] [ 1 ] = j;
}
}
Arrays. sort ( ans, ( ( arr1, arr2) - > ( Math. abs ( arr1[ 0 ] - r0) + Math. abs ( arr1[ 1 ] - c0) ) - ( Math. abs ( arr2[ 0 ] - r0) + Math. abs ( arr2[ 1 ] - c0) ) ) ) ;
return ans;
}
}
本地测试代码
package com. company;
import java. util. Arrays;
import java. util. Comparator;
public class Solution_1030 {
public static int [ ] [ ] allCellsDistOrder ( int R, int C, int r0, int c0) {
if ( R <= 0 || C <= 0 )
return new int [ 0 ] [ 0 ] ;
int index = 0 ;
int [ ] [ ] ans = new int [ R * C] [ 2 ] ;
for ( int i = 0 ; i < R; i++ ) {
for ( int j = 0 ; j < C; j++ ) {
ans[ index] [ 0 ] = i;
ans[ index++ ] [ 1 ] = j;
}
}
Arrays. sort ( ans, ( ( arr1, arr2) - > ( Math. abs ( arr1[ 0 ] - r0) + Math. abs ( arr1[ 1 ] - c0) ) - ( Math. abs ( arr2[ 0 ] - r0) + Math. abs ( arr2[ 1 ] - c0) ) ) ) ;
return ans;
}
public static void main ( String[ ] args) {
System. out. println ( Arrays. deepToString ( allCellsDistOrder ( 1 , 2 , 0 , 0 ) ) ) ;
System. out. println ( Arrays. deepToString ( allCellsDistOrder ( 2 , 2 , 0 , 1 ) ) ) ;
System. out. println ( Arrays. deepToString ( allCellsDistOrder ( 2 , 3 , 1 , 2 ) ) ) ;
}
}