zoukankan      html  css  js  c++  java
  • Spiral Matrix

    Problem

    Given aNXN matrix, starting from the upper right corner of the matrix start printingvalues in a counter-clockwise fashion.
    E.g.: Consider N = 4
    Matrix= {a, b, c, d,
    e, f, g, h,
    i, j, k, l,
    m, n, o, p}
    Your function should output: dcbaeimnoplhgfjk

    Solution

     1 public ArrayList<Integer> spiralOrder(int[][] matrix) {
     2     ArrayList<Integer> res = new ArrayList<Integer>();
     3     
     4     if(matrix == null || matrix.length == 0) {
     5         return res;
     6     }
     7     
     8     int row = matrix.length;
     9     int col = matrix[0].length;
    10     
    11     int x = 0;
    12     int y = 0;
    13     while(row > 0 && col > 0) {
    14         //if row or col == 1, no circle can be found
    15         if(row == 1) {
    16             for(int i=0; i<col; i++) {
    17                 res.add(matrix[x][y++]);
    18             }
    19             break;
    20         }
    21         if(col == 1) {
    22             for(int i=0; i<row; i++) {
    23                 res.add(matrix[x++][y]);
    24             }
    25             break;
    26         }
    27         
    28         //row left to right
    29         for(int i=0; i<col-1; i++) {
    30             res.add(matrix[x][y++]);
    31         }
    32         //col high to low
    33         for(int i=0; i<row-1; i++) {
    34             res.add(matrix[x++][y]);
    35         }
    36         //row right to left
    37         for(int i=0; i<col-1; i++) {
    38             res.add(matrix[x][y--]);
    39         }
    40         //col low to high
    41         for(int i=0; i<row-1; i++) {
    42             res.add(matrix[x--][y]);
    43         }
    44         
    45         row = row - 2;
    46         col = col - 2;
    47         x++;
    48         y++;
    49         
    50     }
    51     
    52     return res;
    53 }
  • 相关阅读:
    spring学习之模拟spring(spring原理解析)-01.xml文件的解析
    存储过程学习
    对象的深浅拷贝
    JavaScript 面向对象编程思想(二)
    深层剖析JavaScript 一
    深入剖析 css
    Vuex 总结
    h5 微信授权
    LeetCode
    echarts-liquidfill
  • 原文地址:https://www.cnblogs.com/superbo/p/4112131.html
Copyright © 2011-2022 走看看