• leetcode : Spiral Matrix II


    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

    For example,

    Given n = 3,

    You should return the following matrix:

    [

     [ 1, 2, 3 ],

     [ 8, 9, 4 ],

     [ 7, 6, 5 ]

    ]

     tag: 坐标变换。  递归。 矩阵

     

    public class Solution {
        public int[][] generateMatrix(int n) {
            
            if(n <= 0) {
                return new int[0][0];
            }
            
            if(n == 1) {
                int[][] matrix = new int[1][1];
                matrix[0][0] = 1;
                return matrix;
            }
            
            int x = 0;
            int y = 0;
            int rows = n;
            int cols = n;
            int[][] matrix = new int[n][n];
            int count = 1;
            helper(matrix, x, y, rows, cols, count);
            return matrix;
        }
        
        public void helper(int[][] matrix, int x, int y, int rows, int cols, int count) {
            
            if(rows <= 0 || cols <= 0) {
                return;
            }
            
            // first line
            for(int i = 0; i < cols; i++) {
                matrix[x][y + i] = count++;
            }
            
            // right line
            for(int i = 1; i < rows - 1; i++) {
                matrix[x + i][y + cols - 1] = count++;
            }
            
            // last line
            if(rows > 1) {
                for(int i = cols - 1; i >= 0; i-- ) {
                    matrix[x + rows - 1 ][y + i] = count++;
                }
            }
            
            if(cols > 1) {
                for(int i = cols - 2; i > 0; i--) {
                    matrix[x + i][y] = count++;
                }
            }
            
            helper(matrix, x + 1, y + 1, rows - 2, cols - 2,count);
        }
    }
    

      

     

  • 相关阅读:
    CentOS6.3搭建Nginx代理访问MongoDB GridFS图片资源
    PHP判断变量是否存在及函数isset() 、empty()与is_null的区别
    【摘】请问make -j8 和make -j4 是什么意思?什么作用?
    关于数字、数据处理的几个PHP函数汇总
    Windows下Nginx的启动、停止等基本命令
    Git 简明教程
    PHP函数preg_replace() 正则替换所有符合条件的字符串
    如何挂载阿里云Linux服务器的“数据盘”(新购买)
    ThinkPHP模板中JS等带花括号处会被解析错误的解决办法
    移动端与PHP服务端接口通信流程设计(增强版)
  • 原文地址:https://www.cnblogs.com/superzhaochao/p/6476050.html
Copyright © 2020-2023  润新知