Spiral Matrix
2015-10-02 16:14
281 查看
题目:
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:
You should return
分析:
《剑指offer》上原题,但是我记得我都ac过了啊 http://www.programcreek.com/2013/01/leetcode-spiral-matrix-java/
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].
分析:
《剑指offer》上原题,但是我记得我都ac过了啊 http://www.programcreek.com/2013/01/leetcode-spiral-matrix-java/
public class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> result = new ArrayList<Integer>(); if(matrix == null || matrix.length == 0) return result; int m = matrix.length; int n = matrix[0].length; int x=0; int y=0; while(m>0 && n>0){ //if one row/column left, no circle can be formed if(m==1){ for(int i=0; i<n; i++){ result.add(matrix[x][y++]); } break; }else if(n==1){ for(int i=0; i<m; i++){ result.add(matrix[x++][y]); } break; } //below, process a circle //top - move right for(int i=0;i<n-1;i++){ result.add(matrix[x][y++]); } //right - move down for(int i=0;i<m-1;i++){ result.add(matrix[x++][y]); } //bottom - move left for(int i=0;i<n-1;i++){ result.add(matrix[x][y--]); } //left - move up for(int i=0;i<m-1;i++){ result.add(matrix[x--][y]); } x++; y++; m=m-2; n=n-2; } return result; } }
相关文章推荐
- 通信原理实践(一)——音频信号处理
- C# 获取操作系统相关信息
- Nginx Event模块
- UGUI学习笔记4——UI Events,Event Triggers
- 关于Maven的一些见解
- C#反射技术的简单操作
- 创建数据表
- codeforces 466E Information Graph 并查集LCA离线一通乱搞
- Trapping Rain Water
- 0.IDA-基本操作
- C++中堆、栈数据区别
- iOS 多线程的使用(GCD)
- CocoaPods安装
- JAVA SHH框架搭建(多图)
- 黑马程序员-----Foundation框架学习之NSString续
- 许鹏:从零开始学习,Apache Spark源码走读(三)
- 关于spring中<context:component-scan base-package="" />写法
- Java 序列化相关
- HDU 5444 Elven Postman 2015 ACM/ICPC Asia Regional Changchun Online
- 分治法Devide-and 4000 -Conquer