首页 > 其他分享 >代码随想录day2补充之LeetCode59螺旋矩阵II

代码随想录day2补充之LeetCode59螺旋矩阵II

时间:2022-11-18 11:58:53浏览次数:78  
标签:螺旋 int 随想录 day2 LeetCode59 ++ num result 矩阵

  1. LeetCode59螺旋矩阵II题目链接
  • 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
  • 示例 1:
    输入:n = 3
    输出:[[1,2,3],[8,9,4],[7,6,5]]
  • 示例 2:
    输入:n = 1
    输出:[[1]]
  • 看了卡哥视频及文章后,这个题目还是坚持循环不变量原则,可以每画一条边都坚持一致的左闭右开,然后根据螺旋顺序分别处理,代码如下(java):
点击查看代码
public class Solution {
    public int[][] generateMatrix(int n) {
        int[][] result=new int[n][n];
        int startX=0;
        int startY=0;
        int i,j;
        int offset=1;
        int circle=n/2;
        int num=1;
        while (circle>0){
            for(j=startY;j<n-offset;j++){
                result[startX][j]=num++;
            }
            for(i=startX;i<n-offset;i++){
                result[i][j]=num++;
            }
            for(;j>startY;j--){
                result[i][j]=num++;
            }
            for (;i>startX;i--){
                result[i][j]=num++;
            }
            startX++;
            startY++;
            offset++;
            circle--;
        }
        if(n%2==1){
            result[n/2][n/2]=num;
        }
        return result;
    }
}
  • 看懂之后实现就比较简单了,主要是需要理解思想,保持循环不变量原则,把问题进行分解一步步解决

标签:螺旋,int,随想录,day2,LeetCode59,++,num,result,矩阵
From: https://www.cnblogs.com/LiHua-Koi/p/16902729.html

相关文章