zoukankan      html  css  js  c++  java
  • leetcode54 Spiral Matrix

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

     1 class Solution {
     2 public:
     3     vector<int> spiralOrder(vector<vector<int>>& matrix) {
     4         vector<int> ans;
     5         int xmin=0,ymin=0;
     6         int xmax=matrix.size();
     7         if(!xmax)
     8             return ans;
     9         int ymax=matrix[0].size();
    10         
    11         int dir=1;
    12         int count=0;
    13         int cmax=xmax*ymax;
    14         xmax--;
    15         ymax--;
    16         
    17         int x=0,y=0;
    18         ans.push_back(matrix[x][y]);
    19         count++;
    20     
    21         while(count<cmax)
    22         {
    23             if(dir==1)
    24             {
    25                 if(y+1>ymax)
    26                 {
    27                     dir=2;
    28                     xmin++;
    29                 }
    30                 else
    31                 {
    32                     y++;
    33                     ans.push_back(matrix[x][y]);
    34                     count++;
    35                 }
    36             }
    37             else if(dir==2)
    38             {
    39                 if(x+1>xmax)
    40                 {
    41                     dir=3;
    42                     ymax--;
    43                 }
    44                 else
    45                 {
    46                     x++;
    47                     ans.push_back(matrix[x][y]);
    48                     count++;
    49                 }
    50             }
    51             else if(dir==3)
    52             {
    53                 if(y-1<ymin)
    54                 {
    55                     dir=4;
    56                     xmax--;
    57                 }
    58                 else
    59                 {
    60                     y--;
    61                     ans.push_back(matrix[x][y]);
    62                     count++;
    63                 }
    64             }
    65             else
    66             {
    67                 if(x-1<xmin)
    68                 {
    69                     dir=1;
    70                     ymin++;
    71                 }
    72                 else
    73                 {
    74                     x--;
    75                     ans.push_back(matrix[x][y]);
    76                     count++;
    77                 }
    78             }
    79         }
    80         return ans;
    81     }
    82 };
    View Code
  • 相关阅读:
    java I/O框架 (三)基本流
    java I/O框架 (二)文件操作(File)
    java I/O框架 (一)总览
    8.内部类
    7.权限
    6.继承
    5.代码块
    4.面向对象
    3控制语句
    PHP ksort() 函数
  • 原文地址:https://www.cnblogs.com/jsir2016bky/p/5105838.html
Copyright © 2011-2022 走看看