zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    

      

     

  • 相关阅读:
    为Internal页面添加一个Unit Test的运行入口
    使用 AWSTATS 来查看IIS/iisnode 日志
    用issnode+IIS来托管NodeJs Server之四:支持Debug
    Restify实践
    Mocha实践
    Graphite实战
    StatsD与Graphite联合作战
    单元测试
    NHibernate配置
    NHibernate概念
  • 原文地址:https://www.cnblogs.com/superzhaochao/p/6476050.html
Copyright © 2011-2022 走看看