java数据结构与算法刷题-----LeetCode59. 螺旋矩阵 II
发布时间:2024年01月20日
- 初始,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;
int top = 0, bottom = n-1;
for(int i = 1;i<=n*n;){
for(int j = left; j<= right; j++) arr[top][j] = i++;
top++;
for(int j = top; j <= bottom; j++) arr[j][right] = i++;
right--;
for(int j = right; j >= left; j--) arr[bottom][j] = i++;
bottom--;
for(int j = bottom;j>= top; j--) arr[j][left] = i++;
left++;
}
return arr;
}
}
文章来源:https://blog.csdn.net/grd_java/article/details/135709026
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!