【LeetCode-中等题】59. 螺旋矩阵 II

题目

在这里插入图片描述

方法一:二维数组缩圈填数字

在这里插入图片描述

定义四个边界条件,每转一圈,把数值填进去,然后缩小一圈,直到不满足条件位置
结束循环条件可以是:
两种结束条件都可以,但是一定要注意每次处理一条边界的范围 不能重复赋值

 while(right >= left && bom >= top){
    
    //结束转圈条件(边界不满足)
        //while(count <= n * n){//结束转圈条件(填写数值到最大了  无需填了)    
      
class Solution {
    
    
//方法一  : 定义四个边界条件,每转一圈,就缩小一圈,直到不满足条件位置
    public static int[][] generateMatrix(int n) {
    
    
        int[][] res = new int[n][n];
        int left = 0;
        int right = n-1;
        int top = 0;
        int bom = n-1;
        int count = 1;//计数器
        while(right >= left && bom >= top){
    
    //结束转圈条件
        //while(count <= n * n){//结束转圈条件     两种结束条件都可以
            //上左闭右闭
            for(int i = left;i<=right ; i++){
    
    
                res[top][i] = count;
                count++;
            }
            //右   上开下闭
            for(int i = top+1;i<=bom ; i++){
    
    
                res[i][right] = count;
                count++;
            }
            //下   左闭右开
            for(int i = right-1;i>=left ; i--){
    
    
                res[bom][i] = count;
                count++;
            }
            //左 下开上开
            for(int i = bom-1;i>top ; i--){
    
    
                res[i][left] = count;
                count++;
            }
            //缩小一圈   修改四个边界
            left++;
            right--;
            top++;
            bom--;
        }
        return res;
    }
}

方法二:

猜你喜欢

转载自blog.csdn.net/weixin_45618869/article/details/132813204
今日推荐