885-spiral-matrix-iii

DevGod needs to write a blog entry for this problem!
/**
 * @param {number} rows
 * @param {number} cols
 * @param {number} rStart
 * @param {number} cStart
 * @return {number[][]}
 */
var spiralMatrixIII = function(rows, cols, rStart, cStart) {

    function checkBounds(x,y){
        return x>=0 && y>=0 && x<rows && y<cols;
    }

    let dirs = [[0,1],[1,0],[0,-1],[-1,0]];
    let row = rStart;
    let col = cStart;
    let res = [[rStart,cStart]];
    for(let I = 0, Z = 0; Z<(rows*cols)-1; I++){
        let dir = dirs[I%4];
        let moves = Math.floor(I/2)+1;
        for(let A = 0; A<moves; A++){
            row += dir[0];
            col += dir[1];
            if( checkBounds(row, col) ){
                res.push( [row, col])
                Z++;
            }
        }
    }

    return res;
};