行列R行およびセルは0 <= R <R 0 <= C <Cを満たす整数座標(R、C)であるC列、与えられました。
加えて、我々は、マトリックス中のセル座標(R0、C0)を得ました。
前記二つの細胞(R1、C1)との間の距離、最小から順に配置された最大までの距離(C0、R0)によれば、マトリックスの全てのセルの座標を返す(R2、C2)マンハッタン距離、| R1 - R2 | + | C1 - C2 |。(この条件回答を満足する任意の順序を返すことができる。)
実施例1:
入力:R = 1、C 2 R0 0 C0 = 0、=、=
出力:[0,0]、[0,1]
辞書:から(R0、C0)他のセルからの距離にある[0、1]
実施例2:
入力:R = 2、C = 2 、R0 = 0、C0 = 1
出力:[0,1]、[ 0,0]、[1,1]、[1,0]
説明:から(R0、C0)他の細胞への距離:[0,1,1,2]
[0,1]、[ 1,1]、[0,0]、[1,0]正解として扱われます。
実施例3:
入力:R = 2、C = 3 、R0 = 1、C0 = 2
出力:[1,2]、[0,2]、[1,1]、[0,1]、[1,2 0]、[0,0]
説明:から(R0は、C0)他のセルまでの距離に:[0,1,1,2,2,3]
要件を満たすために他のトピックは、正解とみなされます例えば[1,2]、[1,1]、[0,2]、[1,0]、[0,1]、[0,0]。
ヒント:
1 <= R&LT <= 100
1 <= C <= 100。
0 <= R0の<R&LT
0 <CO = <C
ソース:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/matrix-cells -in-距離順
すべてのネットワークからの控除が著作権を保有。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。
クラスソリューション{ 公共 のint [] [] allCellsDistOrder(INT R、INT C、INT R0、INT C0){ INT [] [] RES = 新しい INT [Rの*のC] [2 ]。 int型のインデックス= 0 ; 以下のために(int型 i = 0; iはRを<; I ++ ) のための(INT J = 0; J <C; J ++ ){ int型 [] XY = {I、J}。 RES [インデックス ++] = XY。 } は、Arrays.sort(RES、新しいコンパレータ< INT []> (){ @Override 公共 intは比較(INT [] O1、INT [] O 2){ int型 DIS1 = Math.abs(O1 [0] -r0)+ Math.abs(O1 [1] - C0)。 INT DIS2 = Math.abs(O 2 [0] -r0)+ Math.abs(O 2 [1] - C0)。 返す DIS1 - DIS2を。 } })。 リターンのres; } }