leetcode_c++: Spiral Matrix II(059)

原创 2016年06月01日 00:28:33

题目

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 ]
]


算法

复杂度:O(nm)


class Solution {
public:
    vector<vector<int> > generateMatrix(int n) {
        if(n==0) return vector<vector<int> >(); //  返回空的数组
        vector<vector<int> > ret(n,vector<int>(n,0));

        int rowBegin=0;
        int rowEnd=n-1;
        int colBegin=0;
        int colEnd=n-1;
        int num=1;

        while(rowBegin<=rowEnd && colBegin <= colEnd){
            if(num<=n*n) //判断是否达到最大值
            {
                //向右遍历添加
                for(int j=colBegin;j<=colEnd;j++){
                    ret[rowBegin][j]=num;
                    num++;
                }
            }
            rowBegin++;

            if(num<=n*n) //判断是否达到最大值
            {
                //向下遍历添加
                for(int i=rowBegin;i<=rowEnd;i++){
                    ret[i][colEnd]=num;
                    num++;
                }
            }
            colEnd--;


            if(num<=n*n) //判断是否达到最大值
            {
                //向左遍历添加
                for(int j=colEnd;j>=colBegin;j--){
                    ret[rowEnd][j]=num;
                    num++;
                }
            }
            rowEnd--;

            if(num<=n*n) //判断是否达到最大值
            {
                //向上遍历添加
                for(int i=rowEnd;i>=rowBegin;i--){
                    ret[i][colBegin]=num;
                    num++;
                }
            }
            colBegin++;


        }
        return ret;
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

Spiral Matrix II(旋转矩阵)

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For...
  • cow__sky
  • cow__sky
  • 2014年03月07日 21:31
  • 733

Leetcode 240 Search a 2D Matrix II (二分法和分治法解决有序二维数组查找)

1.问题描述  写一个高效的算法,从一个m×nm\times n的整数矩阵中查找出给定的值,矩阵具有如下特点:    每一行从左到右递增。 每一列从上到下递增。 2. 方法与思路2.1 二分查找法 ...
  • Jeanphorn
  • Jeanphorn
  • 2015年07月23日 20:41
  • 3100

59. Spiral Matrix II(待进一步研究)

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.For e...
  • shanshanhi
  • shanshanhi
  • 2017年02月23日 11:15
  • 98

Spiral Matrix问题及解法

问题描述: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix i...
  • u011809767
  • u011809767
  • 2017年07月27日 21:57
  • 63

Spiral Matrix II 产生正方形的旋转矩阵@LeetCode

package Level3; /** * Spiral Matrix II * * Given an integer n, generate a square matrix filled ...
  • hellobinfeng
  • hellobinfeng
  • 2013年11月09日 04:13
  • 2054

Spiral Matrix所谓的顺时针打印矩阵

很久之前我面试曾遇到过这道题目,现场写的非常混乱。这道题目应该算是难题,难在对边界条件的处理。 如何发现规律,发现不变式,并能保证简单性是关键。一个明显的不变式是(→ ↓ ← ↑ )如何让它顺畅的循...
  • ylzintsinghua
  • ylzintsinghua
  • 2014年12月22日 09:41
  • 292

蛇形螺旋矩阵的生成和遍历 Spiral Matrix

[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 一个n*n矩阵像上面这样,自然数从1到n,由外到里螺旋者走,这样叫Spir...
  • luckyjoy521
  • luckyjoy521
  • 2014年02月27日 20:10
  • 1239

LeetCode OJ算法题(五十三):Spiral Matrix

题目: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in ...
  • op_yu
  • op_yu
  • 2014年08月07日 20:59
  • 245

LeetCode | Spiral Matrix(顺时针打印矩阵)

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or...
  • a45872055555
  • a45872055555
  • 2014年08月11日 11:11
  • 853

54. Spiral Matrix (有待进一步研究)

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or...
  • shanshanhi
  • shanshanhi
  • 2017年02月23日 13:10
  • 110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode_c++: Spiral Matrix II(059)
举报原因:
原因补充:

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