zoukankan      html  css  js  c++  java
  • leetcode -- 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 public class Solution {
     2     public ArrayList<Integer> spiralOrder(int[][] matrix) {
     3         // Start typing your Java solution below
     4         // DO NOT write main() function
     5         ArrayList<Integer> result = new ArrayList<Integer>();
     6         int rows = matrix.length;
     7         if(rows == 0){
     8             return result;
     9         }
    10         int cols = matrix[0].length;
    11         if(cols == 0)
    12             return result;
    13             
    14         int start = 0;
    15         while(rows > start * 2 && cols > start * 2){
    16             printCircle(matrix, rows, cols, start, result);
    17             start ++;
    18         }
    19         return result;
    20     }
    21     
    22     public void printCircle(int[][] matrix, int rows, int cols, int start, ArrayList<Integer> result){
    23         int endX = cols - 1 - start;
    24         int endY = rows - 1 - start;
    25         
    26         // print up
    27         for(int i = start; i <= endX; i++){
    28             result.add(matrix[start][i]);
    29         }
    30         
    31         // print right
    32         if(endY > start){
    33             for(int i = start + 1; i <= endY; i ++){
    34                 result.add(matrix[i][endX]);
    35             }
    36         }
    37         // print down
    38         if(endX > start && endY > start){
    39             for(int i = endX - 1; i >= start; i--){
    40                 result.add(matrix[endY][i]);
    41             }
    42         }
    43         // print left
    44         if(endX > start && endY - 1 > start){
    45             for(int i = endY - 1; i > start; i--){
    46                 result.add(matrix[i][start]);
    47             }
    48         }
    49     }
    50 }
  • 相关阅读:
    最全最详尽的ajax教程1
    Mysql笔记(一)
    JAVA基础知识整理(五)
    JAVA基础知识点整理(四)
    JAVA基础知识点整理(三)
    JAVA基础知识点整理(二)
    JAVA基础知识点整理(一)
    JAVA Web知识点整理(六)
    JAVA Web知识点整理(五)
    JAVA Web知识点整理(四)
  • 原文地址:https://www.cnblogs.com/feiling/p/3244719.html
Copyright © 2011-2022 走看看