LeetCode每日一题.02(螺旋矩阵||)
2023-12-31 04:56:40
螺旋矩阵:
给你一个正整数?n
?,生成一个包含?1
?到?n2
?所有元素,且元素按顺时针顺序螺旋排列的?n x n
?正方形矩阵?matrix
?。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
解题思路:
? ? ? ? 本题可以用地推方法,用四个循环表示四个方向的螺旋排序,再一个大循环依次向内收缩,若是奇数矩阵,则最后再将中间的加上即可
代码实现:
class Solution {
public int[][] generateMatrix(int n) {
int [][]square=new int[n][n];
int r=n-1,l=0,t=0,b=n-1;
int j=1;
//外层循环
while(j<n*n){
//向右螺旋
for(int x=l;x<=r;x++)
square[t][x]=j++;
t++;
//下螺旋
for(int x=t;x<=b;x++)
square[x][r]=j++;
r--;
//向左螺旋
for(int x=r;x>=l;x--)
square[b][x]=j++;
b--;
//向上螺旋
for(int x=b;x>=t;x--)
square[x][l]=j++;
l++;
}
若数组宽度为奇数,加上中间
if(n%2!=0){
square[(n-1)/2][(n-1)/2]=n*n;
}
return square;
}
}
?
?
文章来源:https://blog.csdn.net/m0_73879453/article/details/135300400
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!