java数据结构与算法刷题-----LeetCode59.螺旋矩阵II
- 手机
- 2025-08-05 20:57:01

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 初始,top行执向第一行,bottom行指向最后一行。left列指向第一列,right列指向最后一列首先填充top行,arr[top][j], (其中left <= j <= right)。此时第一行填充完成,top下移 => top++然后填充right列,arr[j][right], (其中top <= j <= bottom)。此时最后一列填充完成,right左移 => tright–然后填充bottom行,arr[bottom][j], (其中right >= j >= left)。此时最后一行填充完成,bottom上移 => bottom–然后填充left列,arr[j][left], (其中bottom >= j >= top)。此时第一列填充完成,left右移 => left++此时完成一圈螺旋,整体进入下一层螺旋,重复上面2,3,4,5操作 代码:时间复杂度O( n 2 n^2 n2).空间复杂度O(1) class Solution { public int[][] generateMatrix(int n) { int arr[][] = new int[n][n]; int left = 0,right = n-1;//左右边界,left表示当前顺时针圈的最左边一列,right表示最右边 int top = 0, bottom = n-1;//上下边界,top表示当前顺时针圈的最上面一行,bottom表示最下面 for(int i = 1;i<=n*n;){ for(int j = left; j<= right; j++) arr[top][j] = i++;//top行从左到右填满 top++;//上面将top行填充成功,那么top需要下移一行,准备下一次的填充 for(int j = top; j <= bottom; j++) arr[j][right] = i++;//right列从上到下填满 right--;//上面将right列填充成功,right左移 for(int j = right; j >= left; j--) arr[bottom][j] = i++;//bottom行从右向左填满 bottom--;//上面将bottom行填充成功,bottom上移 for(int j = bottom;j>= top; j--) arr[j][left] = i++;//left列从下到上填满 left++;//上面将left列填充成功,left列右移 } return arr; } }
java数据结构与算法刷题-----LeetCode59.螺旋矩阵II由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“java数据结构与算法刷题-----LeetCode59.螺旋矩阵II”
上一篇
burp靶场--文件上传
下一篇
【备战蓝桥杯】图的遍历问题