leetcode54 Spiral Matrix
2015-11-25 13:47
330 查看
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
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].
package leetcode54; import java.util.ArrayList; import java.util.List; public class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> result = new ArrayList<Integer>(); int row = matrix.length; if (row == 0) { return result; } int col = matrix[0].length; int count = 1; int allLen = row * col; int i = 0; int j = 0; boolean used[][] = new boolean[row][col]; for (int i1 = 0; i1 < row; i1++) { for (int j1 = 0; j1 < col; j1++) { used[i1][j1] = false; } } /*for (int i1 = 0; i1 < row; i1++) { for (int j1 = 0; j1 < col; j1++) { System.out.println(used[i1][j1]); } }*/ while (count < allLen-1 ) { while (j + 1 < col && used[i][j + 1] == false) { result.add(matrix[i][j]); used[i][j] = true; j++; count++; } while (i + 1 < row && used[i + 1][j] == false) { result.add(matrix[i][j]); used[i][j] = true; i++; count++; } while (j - 1 >= 0 && used[i][j - 1] == false) { result.add(matrix[i][j]); used[i][j] = true; j--; count++; } while (i - 1 >= 0 && used[i - 1][j] == false) { result.add(matrix[i][j]); used[i][j] = true; i--; count++; } } for (int i1 = 0; i1 < row; i1++) { for (int j1 = 0; j1 < col; j1++) { if (used[i1][j1] == false) { result.add(matrix[i1][j1]); } } } // result.add(matrix[i][j]); return result; } public static void main(String[] args) { int[][] matrix = { /* { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } */ }; int[][] matrix1 = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 15, 16 } }; List<Integer> result = new Solution().spiralOrder(matrix1); for (int i = 0; i < result.size(); i++) { System.out.print(result.get(i) + " "); } } }
相关文章推荐
- 最方便的傻瓜式的vim配置
- 解决play-1.4.0在linux或mac下提示No such file or directory的问题
- uml中的几种关系
- JS引用html页面
- 命令模式
- 浅谈网络语音技术
- android textview 设置不同的颜色和大小
- CountDownTimer倒计时
- sizeof与offsetof有关的结构体详解 http://blog.csdn.net/callinglove/article/details/46534883
- Jquery插件
- c++11 匿名函数支持
- 基于用户的协同过滤和皮尔逊相关系数
- javaScript去除空格或换行
- 关于mysql函数GROUP_CONCAT 需要注意的地方
- 【LeetCode】150 Evaluate Reverse Polish Notation 小侃小解
- 安装cocoapods的终端命令
- css 背景属性background的使用方法
- 自动摘要算法
- 浏览器中event.srcElement和event.target的兼容性问题
- dev -gridview隐藏子表标题