跳到主要内容

1030.距离顺序排列矩阵单元格

链接:1030.距离顺序排列矩阵单元格
难度:Easy
标签:几何、数组、数学、矩阵、排序
简介:给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为  (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)。

题解 1 - typescript

  • 编辑时间:2020-11-17
  • 执行用时:284ms
  • 内存消耗:54MB
  • 编程语言:typescript
  • 解法介绍:遍历所有情况再进行排序。
function allCellsDistOrder(R: number, C: number, r0: number, c0: number): number[][] {
const cache: Record<string, number> = {};
const format = (r: number, c: number) => `${r}:${c}`;
const comp = (r: number, c: number) => {
const name = format(r, c);
if (cache[name]) return cache[name];
else {
const num = Math.abs(r - r0) + Math.abs(c - c0);
cache[name] = num;
return num;
}
};
const ans: number[][] = [];
for (let i = 0; i < R; i++) {
for (let j = 0; j < C; j++) {
ans.push([i, j]);
}
}
return ans.sort(([r1, c1], [r2, c2]) => comp(r1, c1) - comp(r2, c2));
}