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);
        }
    }
    

      

     

  • 相关阅读:
    使用SQL Server Management Studio 创建数据库备份作业
    ClickOnce 获取客户端发布版本号
    在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
    找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)
    常用操作类
    数据库命名规范
    expression动态构成
    C# 获得当前方法 和 方法调用链 的 方法
    EF架构封装类
    基于微软企业库的分层代码框架
  • 原文地址:https://www.cnblogs.com/superzhaochao/p/6476050.html
Copyright © 2011-2022 走看看