本文主要是介绍Leetcode oj java 54. 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]
.
二、思路:
画圈圈,思路参考http://blog.csdn.net/u011060119/article/details/53906780
但是要注意到只有单独一行或者单独一列的情况。
三、代码:
package T12;import java.util.ArrayList;
import java.util.List;/*** @author 作者 : xcy* @version 创建时间:2016年12月28日 上午11:21:12* 类说明*/
public class t54 {public static void main(String[] args) {// TODO Auto-generated method stubint[][] matrix = { { 1, 2, 3, 4, 5 } };List<Integer> re = spiralOrder(matrix);for (int i = 0; i < re.size(); i++) {System.out.println(re.get(i));}}public static List<Integer> spiralOrder(int[][] matrix) {List<Integer> re = new ArrayList<Integer>();int m = matrix.length;if (m < 1) {return re;}int n = matrix[0].length;int start = 0;while (m > start * 2 && n > start * 2) {// addre = addNum(re, matrix, m, n, start);start++;}return re;}public static List<Integer> addNum(List<Integer> list, int[][] matrix, int m, int n, int start) {int i = start;int j = start;boolean flag = n % 2 == 1 ? true : false;// 从左到右for (j = start; j < (n - start); j++) {list.add(matrix[i][j]);}// 从上到下j = n - start - 1;for (i = start + 1; i < (m - start); i++) {list.add(matrix[i][j]);}//从右到左i = m - start - 1;if (i != start) {for (j = n - start - 2; j >= start; j--) {list.add(matrix[i][j]);}}// 从下到上if (flag && start == n / 2) {return list;}j = start;for (i = m - start - 2; i > start; i--) {list.add(matrix[i][j]);}return list;}}
这篇关于Leetcode oj java 54. Spiral Matrix的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!