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

2020-11-17  本文已影响0人  彼小星星空下看星星

给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。

另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。

返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)

解题思路以及知识点:
遍历计算所有位置的曼哈顿距离,把计算结果以[结果,坐标集合]为键值对存储,最后按序输出。【maths.abs计算绝对值】

/**
 * @param {number} R
 * @param {number} C
 * @param {number} r0
 * @param {number} c0
 * @return {number[][]}
 */
var allCellsDistOrder = function(R, C, r0, c0) {
    let result={},
        x,y;
    for(let i=0;i<R;i++){
        x=Math.abs(i-r0)
        for(let j=0;j<C;j++){
            y=lang=Math.abs(j-c0)+x
            if(result[y]){
                result[y].push([i,j])
            }else{
                result[y]=new Array([i,j])
            }
        }
    }
    let index=0;
    let temp=[]
    while(result[index]){
        temp.push(...result[index])
        index++
    }
    return temp
};
上一篇下一篇

猜你喜欢

热点阅读