Spiral Matrix

原创 2016年08月29日 11:35:19

一、问题描述

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]

You should return [1,2,3,6,9,8,7,4,5].

二、思路

这道题目思路也很简单,由于是m*n个元素,所以只要外层循环中数组中元素小于等于总元素个数即可。内部有四个循环,分别是从左到右、从上到下、从右到左和从下到上,每进行完一个循环都要判断元素书否达到上限m*n,执行完4个循环后需要将i加一。

三、代码

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> vec;
        if (matrix.empty()) return {};
        int m = matrix.size();
        int n = matrix[0].size();
        int i = 0, sum = m * n,x,y;
        while(vec.size() <= sum){
            x = i;
            for(y = i; y < n -i; ++y)
                vec.push_back(matrix[x][y]);
            if(vec.size() == sum) break;
            
            y = n - i - 1;
            for(x = i + 1; x < m - i; ++x)
                vec.push_back(matrix[x][y]);
            if(vec.size() == sum) break;
            
            x = m - 1 - i;
            for(y = n - 2 - i; y >= i; --y)
                vec.push_back(matrix[x][y]);
            if(vec.size() == sum) break;
            
            y = i;
            for(x = m - 2 - i; x > i;--x)
                vec.push_back(matrix[x][y]);
            if(vec.size() == sum) break;
            
            ++i;
        }
        return vec;
    }
};


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

1105. Spiral Matrix (25) 排序、模拟

Spiral Matrix (25) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Thi...
  • a1eafall
  • a1eafall
  • 2016年04月06日 14:39
  • 274

【LeetCode】54. Spiral Matrix 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/50771703Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016年05月15日 10:28
  • 5522

[Leetcode]54. Spiral Matrix @python

题目Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral ...
  • qian2729
  • qian2729
  • 2016年01月18日 21:27
  • 268

【PAT】1105. Spiral Matrix (25)

This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasi...
  • realxuejin
  • realxuejin
  • 2015年12月05日 22:03
  • 1246

LeetCode(54)Spiral Matrix

题目Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral ...
  • fly_yr
  • fly_yr
  • 2015年09月05日 21:28
  • 1511

[C++]LeetCode: 110 Spiral Matrix (螺旋输出矩阵元素)

题目: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in sp...
  • cinderella_niu
  • cinderella_niu
  • 2015年01月19日 16:28
  • 1731

LeetCode59——Spiral Matrix II

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

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
  • 99

[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
  • 654

leetcode: Spiral Matrix---python

题目解释: Spiral Matrix  Total Accepted: 10384 Total Submissions: 50841My Submissions ...
  • u013043665
  • u013043665
  • 2014年07月20日 15:29
  • 485
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spiral Matrix
举报原因:
原因补充:

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