螺旋矩阵变种方法

来源:10-2 螺旋矩阵-代码实操

nkliyc

2019-06-25

export default (matrix) => { 
    if(matrix.length === 0) return []
    let result = []
    // 处理每一圈的数据遍历过程
    let map = (arr) => {
        if(arr.length === 1) {
            result = result.concat(arr.shift())
            return
        } 
        if(arr.length === 2) {
            result = result.concat(arr.shift())
            result = result.concat(arr.pop().reverse())
            return
        }
        if(arr.length > 2) {
            result = result.concat(arr.shift())
            for (let i = 0, n = arr.length; i < n; i++) {
                result.push(arr[i].pop())
            }
            result = result.concat(arr.pop().reverse())
            for(let i = arr.length - 1; i >= 0; i--) {
                result.push(arr[i].shift())
            }
            map(arr)    
        }
    }
    map(matrix)
    result = result.filter(item => item !== undefined)
    return result
};
写回答

1回答

快乐动起来呀

2019-06-25

可以现在LeetCode提交下代码看看通过率,如果效果好欢迎贡献到 git.imooc.com 对于优秀的答案会有奖励哟

0
3
nkliyc
这个方法经过了leetcode测试的
2019-06-25
共3条回复

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程