【LeetCode】59.螺旋矩阵II

59.螺旋矩阵II

知识点:数组

题目描述

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

示例
输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 输入:n = 1 输出:[[1]]

解法一:

和54题解法基本一致,利用四个边界条件进行遍历;

class Solution { public int[][] generateMatrix(int n) { int[][] ans = new int[n][n]; int num = 1; int top = 0, down = n-1; int left = 0, right = n-1; while (true){ for (int i = left; i <= right; i++){ ans[top][i] = num; num++; } top++; if (top > down) break; for (int i = top; i <= down; i++){ ans[i][right] = num; num++; } right--; if (left > right) break; for (int i = right; i >= left; i--){ ans[down][i] = num; num++; } down--; if (top > down) break; for (int i = down; i >= top; i--){ ans[i][left] = num; num++; } left++; if (left > right) break; } return ans; } }
  • PYTHON
class Solution: def generateMatrix(self, n: int) -> List[List[int]]: matrix = [[0] * n for i in range(n)] #注意二维矩阵的创建方法 top, down = 0, n-1 left, right = 0, n-1 num = 1 while True: for i in range(left, right+1): matrix[top][i] = num num += 1 top += 1 if top > down: break for i in range(top, down+1): matrix[i][right] = num num += 1 right -= 1 if left > right: break for i in range(right, left-1, -1): matrix[down][i] = num num += 1 down -= 1 if top > down: break for i in range(down, top-1, -1): matrix[i][left] = num num += 1 left += 1 if left > right: break return matrix

时间复杂度:O(N);


__EOF__

本文作者Curryxin
本文链接https://www.cnblogs.com/Curryxin/p/15004252.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Curryxin  阅读(35)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
Live2D
欢迎阅读『【LeetCode】59.螺旋矩阵II』
点击右上角即可分享
微信分享提示