zoukankan      html  css  js  c++  java
  • leetcode------Spiral Matrix

    标题: Spiral Matrix
    通过率: 20.8%
    难度:

    中等

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

    前面先做了通过率高的第一个版本,那个给的是2Dmatrix,做这个题目的时候我没有看清楚,直接按照2Dmatrix做的,所以一直出现问题。

    需要注意的是本题是M*N,所以M和N中有可能为空,有可能有一个是1,那么再循环的时候就要认真去考虑了。

    直接看代码了:

     1 public class Solution {
     2     public List<Integer> spiralOrder(int[][] matrix) {
     3         ArrayList<Integer> result=new ArrayList<Integer>();
     4                 if (matrix == null || matrix.length == 0 
     5             || matrix[0].length == 0) {
     6             return result;   
     7         }
     8         int m=matrix.length,n=matrix[0].length;
     9         int startX=0,startY=0,endX=m-1,endY=n-1;
    10         while(startX<=endX&&startY<=endY){
    11             result=getvalue(result,matrix,startX,endX,startY,endY);
    12             startX++;
    13             startY++;
    14             endX--;
    15             endY--;
    16         }
    17         return result;
    18         
    19     }
    20     public ArrayList<Integer> getvalue(ArrayList<Integer> res,int[][] matrix,int startX,int endX,int startY,int endY){
    21         if(startX==endX){
    22             for(int i=startY;i<=endY;i++){
    23             res.add(matrix[startX][i]);
    24         }
    25             return res;
    26         }
    27         else if(startY==endY){
    28             for(int i=startX;i<=endX;i++){
    29              res.add(matrix[i][startY]);
    30             }
    31             return res;
    32         }
    33 
    34         for(int i=startY;i<=endY;i++){
    35             res.add(matrix[startX][i]);
    36         }
    37         for(int i=startX+1;i<=endX;i++){
    38             res.add(matrix[i][endY]);
    39         }
    40         for(int i=endY-1;i>=startY;i--){
    41             res.add(matrix[endX][i]);
    42         }
    43         for(int i=endX-1;i>=startX+1;i--){
    44             res.add(matrix[i][startY]);
    45         }
    46         return res;
    47         
    48     }
    49 }
  • 相关阅读:
    导入.txt数据
    struts1与struts2
    居中问题
    JavaScript创建对象的几种方式
    json
    react模拟后端接口及提交方式
    react受控组件
    react中数据承载props和state用法
    react组件间的通信父子通信,子父通信,兄弟通信
    react模拟后端接口及提交方式 jsonserver
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4320477.html
Copyright © 2011-2022 走看看