【leetcode】每日精选题详解之59. 螺旋矩阵 II

        嗨,大家好,我是袁厨(因为酷爱做饭,所以自己考取了厨师证)。之前一直看大家写的博客,学到了很多东西。然后最近萌生了自己写的想法,将自己知道的分享给需要的同学。以后每天会为大家分享leetcode精选题目的各种题解和Python, JS, JQ, CSS, PHP, JAVA的一些小Demo。请大家关注我,一起交流学习吧。


题目描述

在这里插入图片描述


螺旋填充

做题思路

在这里插入图片描述
这个题目比较简单,但是我们需要注意的是边界情况,之前写过一篇博客是螺旋遍历二维数组。跟这个题目逻辑思想是相反的,那个会做的话这个也是OK的。主要思想就是先创建一个n*n的二维数组,然后顺时针往里面填充数据。

题目代码

class Solution {
    
    
  public static  int[][] generateMatrix(int n) {
    
    
        int num = 1;//用来填充的数字,递增
        int[][] array = new int[n][n];//创建数组 
        for(int i = 0;i < (n+1)/2;i++){
    
    //也可以改为while循环更容易理解
            for(int top = i ; top < n-i ;top++ ){
    
    
                //跳出循环,填充数组完毕,防止 重复填充
                if(num>n*n){
    
    
                     break;
                }
                array[i][top]=num;
                num++;
            }
            for(int right = i+1 ; right < n-i;right++){
    
    
                if(num>n*n){
    
    
                    break;
                }
                array[right][n-i-1]=num;
                num++;
            }
            for(int bottom = n-i-2;bottom>=i;bottom--){
    
    
                if(num>n*n){
    
    
                    break;
                }
                array[n-i-1][bottom]=num;
                num++;
            }
            for(int left = n-i-2;left>i;left--){
    
    
                if(num>n*n){
    
    
                    break;
                }
                array[left][i]=num;
                num++;
            }
        }
            return array;
    }
}

        


总结

该题相当于开通了一个新的类型的题目,通过这个题目我们可以慢慢开辟一个构造二叉树的模块,明天会继续做构造二叉树的题目。

同学们我最近有了一个长久的计划,就是把leetcode题目整理出来,由浅入深,由简到繁都整理出来是一个宏大的工程,所以我打算每天整理一到两个经典题目,完成这一个流程我相信肯定会收获巨大的。如果想一起刷题的哥们,我们可以一起在群里打卡,共同进步。

在这里插入图片描述
在这里插入图片描述

作者:LeetCode
链接:https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/tan45du_yuan/article/details/109005537