zoukankan      html  css  js  c++  java
  • 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]

    程序

    public class Solution {
        public List<Integer> spiralOrder(int[][] matrix) {
            List<Integer> path = new ArrayList<Integer>();
            if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
                return path;
            }
            
            int i = 0, j = 0;
            int n = matrix.length, m = matrix[0].length;
            int cnt = n * m;
            int cyc = 0;
            
            while (true) {
                // to right
                while (j < m - cyc) {
                    path.add(matrix[i][j++]);
                }
                --j;
                ++i;
                // to bottom
                while (i < n - cyc) {
                    path.add(matrix[i++][j]);
                }
                --i;
                --j;
                if (path.size() == cnt) {
                    break;
                }
                
                // to left
                while (j >= cyc) {
                    path.add(matrix[i][j--]);
                }
                ++j;
                --i;
                // to top
                while (i > cyc) {
                    path.add(matrix[i--][j]);
                }
                ++i;
                ++j;
                if (path.size() == cnt) {
                    break;
                }
                
                ++cyc;
            }
            
            return path;
        }
    }
    

      

  • 相关阅读:
    登陆的一个大概流程
    过滤器实现编码过滤处理
    注册的一个大概流程
    lstm clip
    gemm c++
    lstm的debug模式下编译不行貌似
    caffe编译关于imread问题的解决
    c++ 走向高级之日积月累
    c++ 线程
    InitGoogleLogging坑爹
  • 原文地址:https://www.cnblogs.com/harrygogo/p/4672549.html
Copyright © 2011-2022 走看看