2021/03/16 每日一题 螺旋矩阵 II

LeetCode上螺旋矩阵 II,中等难度,记录下解题思路

传入一个n,要求得出n*n的螺旋矩阵

和昨天的题目类似,昨天是遍历获取螺旋矩阵,今天是遍历填充螺旋矩阵,那么填充的逻辑就和昨天一样,并且昨天的题目因为矩阵是正好n*n的正方形,还会有3种情况讨论。

今天的条件就是n*n的矩阵,那么最后一定会只剩下left === rightbottom === top这种情况,直接填充就好了

设置一个计数num,每次填充之后都自增,所以基本上可以套用昨天的代码

var generateMatrix= function (n) {
  // 创建一个n*n的二维数组
  let matrix = Array.from(Array(n),() => new Array(n))
  console.log(matrix);
  // 定义计数为
  let num = 1
  // 设置边界
  let top = 0, 
  bottom = n - 1, 
  left = 0, 
  right = n - 1
  // 当num <= n*n的时候填充二维数组
  while (num <= n*n) {
    // 填充顶部行
    for (let i = left; i <= right; i++) {
      matrix[top][i] = num 
          num++
    }
    top++;
    // 填充右侧列
    for (let i = top; i <= bottom; i++) {
          matrix[i][right] = num
      num++;
    }
    right--;
    // 填充底部行
    for (let i = right; i >= left; i--) {
          matrix[bottom][i] = num
      num++;
    }
    bottom--;
    // 填充左侧列
    for (let i = bottom; i >= top; i--) {
          matrix[i][left] = num
      num++;
    }
    left++;
  }
  // 返回结果
  return matrix
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容