Middle-题目29:59. Spiral Matrix II

原创 2016年05月31日 15:50:32

题目原文:
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
题目大意:
给一个整数n,输出n*n的方阵,其中1~n2以顺时针的螺旋方式填充。
题目分析:
就是简单的模拟,从1开始往里填,注意拐弯的临界条件(走到数组的边缘或者按原方向的下一位已经填好数)。
源码:(language:java)

public class Solution {
    private  final int RIGHT = 1;
    private  final int DOWN = 2;
    private  final int LEFT = 3;
    private  final int UP = 4;
    public  int[][] generateMatrix(int n) {
        int direction = 1;//1,2,3,4 stand for RIGHT,DOWN,LEFT,UP respectively.
        int row=0,col=0;//current position
        int[][] matrix = new int[n][n];
        for(int i=1;i<=n*n;i++) {
            matrix[row][col] = i;
            switch (direction) {
                case RIGHT: {                   
                    if(col+1 == n || matrix[row][col+1] != 0) {
                        direction=DOWN;
                        row++;
                    }
                    else
                        col++;
                    break;
                }
                case DOWN: {
                    if(row+1 == n || matrix[row+1][col] != 0) {
                        direction=LEFT;
                        col--;                      
                    }
                    else
                        row++;
                    break;
                }
                case LEFT: {
                    if(col == 0 || matrix[row][col-1] != 0) {
                        direction=UP;
                        row--;
                    }
                    else
                        col--;
                    break;
                }
                case UP: {
                    if(matrix[row-1][col] != 0) {
                        direction=RIGHT;
                        col++;
                    }
                    else
                        row--;
                }
            }
        }
        return matrix;
    }
}

成绩:
0ms,beats 14.13%,众数0ms,85.87%

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

LeetCode59——Spiral Matrix II

LeetCode59——Spiral Matrix II 参考LeetCode54——Spiral Matrix 唯一不同,就是对二维数组按照这个顺序进行赋值操作:1,2,3,....n 代码:...
  • zhangxiao93
  • zhangxiao93
  • 2015年10月24日 22:13
  • 643

LeetCode 59. Spiral Matrix II (JAVA)(螺旋矩阵2)

LeetCode 59. Spiral Matrix II (JAVA)(螺旋矩阵2)
  • mine_song
  • mine_song
  • 2017年04月17日 16:10
  • 398

[LintCode] 螺旋矩阵II Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n^2 in spiral order.样例 ...
  • wutingyehe
  • wutingyehe
  • 2016年04月26日 13:45
  • 651

leetcode_c++: Spiral Matrix II(059)

题目Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.For...
  • mijian1207mijian
  • mijian1207mijian
  • 2016年06月01日 00:28
  • 96

59. Spiral Matrix II

同Spiral Matrix一样,我们也是逐个环地进行填充,每个环顺时针逐条边填充。代码如下: class Solution { public: vector> generateMatrix...
  • wusecaiyun
  • wusecaiyun
  • 2015年07月29日 17:14
  • 244

Leetcode: Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. F...
  • doc_sgl
  • doc_sgl
  • 2013年10月02日 23:51
  • 2712

【LeetCode with Python】 Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For...
  • nerv3x3
  • nerv3x3
  • 2014年11月30日 21:50
  • 11910

LeetCode------54. Spiral Matrix(螺旋二维矩阵)-----59. Spiral Matrix II(n的螺旋矩阵)

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or...
  • nameix
  • nameix
  • 2016年11月04日 10:24
  • 126

54. Spiral Matrix && 59. Spiral Matrix II

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or...
  • Maggie_2015
  • Maggie_2015
  • 2016年01月13日 15:18
  • 103

59. Spiral Matrix II && 54. Spiral Matrix

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
  • shulixu
  • shulixu
  • 2017年09月18日 21:59
  • 151
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目29:59. Spiral Matrix II
举报原因:
原因补充:

(最多只允许输入30个字)