zoukankan      html  css  js  c++  java
  • 59. 螺旋矩阵 II

    题目描述

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

    示例

    输入: 3
    输出:
    [
     [ 1, 2, 3 ],
     [ 8, 9, 4 ],
     [ 7, 6, 5 ]
    ]
    

    题解

    思路

    和54题思路一样,甚至更简单一点,是正方形。一圈圈打印,每一行或每一列打印时候留下最后一个。

    代码

    class Solution {
        public int[][] generateMatrix(int n) {
            int[][] matrix = new int[n][n];
            // 遍历填充的数字
            int num = 1;
            // 每一圈左边起始位置和右边结束位置 由于是正方形所以列相同
            int left = 0,right = n-1;
            while(left <= right){
                // 最中间的一个
                if(left==right) matrix[left][right] = num++;
                // 最上面一行 除去最后一个
                for(int i=left;i<right;i++) matrix[left][i] = num++;
                // 最右边一列 除去最后一个
                for(int i=left;i<right;i++) matrix[i][right] = num++;
                // 最下面一行 除去最后一个(逆序)
                for(int i=right;i>left;i--) matrix[right][i] = num++;
                // 最左边一列 除去最后一个(逆序)
                for(int i=right;i>left;i--) matrix[i][left] = num++;
                // 一圈遍历结束 遍历下一圈
                left++;
                right--;
            }
            return matrix;
        }
    }
    
  • 相关阅读:
    一分钟教你解决前端分流问题
    win7 mysql 数据库轻松实现数据库定时备份
    mysql 修改密码
    what is yaml ?
    php实现监控在线服务应用程序小栗子
    Python装饰器小代码
    2,构造代码块
    1,匿名对象,封装
    7,random
    测试错题
  • 原文地址:https://www.cnblogs.com/hanyuhuang/p/11058706.html
Copyright © 2011-2022 走看看