[leetcode]54. Spiral Matrix -- JavaScript 代码

来源:互联网 发布:mac usb有线网卡驱动 编辑:程序博客网 时间:2024/05/16 18:14
/** * @param {number[][]} matrix * @return {number[]} */var spiralOrder = function(matrix) {    var ret = [];    var row = matrix.length;    if(row === 0){        return ret;    }    var col = matrix[0].length;    if(col === 0){        return ret;    }    var len = row * col;    var cur_row = 0;    var cur_col = 0;    var pos = 1;    for(var i=0;i<len;i++){        switch(pos){            case 1:                ret.push(matrix[cur_row][cur_col]);                matrix[cur_row][cur_col] = null;                if(cur_col<col-1 && matrix[cur_row][cur_col+1]!==null){                    cur_col++;                }else{                    pos = 2;                    cur_row++;                }                break;            case 2:                ret.push(matrix[cur_row][cur_col]);                matrix[cur_row][cur_col] = null;                if(cur_row<row-1 && matrix[cur_row+1][cur_col]!==null){                    cur_row++;                }else{                    pos = 3;                    cur_col--;                }                break;            case 3:                ret.push(matrix[cur_row][cur_col]);                matrix[cur_row][cur_col] = null;                if(cur_col>0 && matrix[cur_row][cur_col-1]!==null){                    cur_col--;                }else{                    pos = 4;                    cur_row--;                }                break;            case 4:                ret.push(matrix[cur_row][cur_col]);                matrix[cur_row][cur_col] = null;                if(cur_row>1 && matrix[cur_row-1][cur_col]!==null){                    cur_row--;                }else{                    pos = 1;                    cur_col++;                }                break;        }    }    return ret;};

这道题的算法比较容易,就是过程比较麻烦,需要细心。
使用pos来控制向哪个方向来寻找下一个数据;访问过的数据,就标空。

0 0