首页 > 代码库 > Spiral Matrix
Spiral Matrix
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]
.
这道题用的递归的思想,将最外面一层添加到result列表中,然后将剩下元素作为一个数组,做下一次递归,感觉有点土,晚点去搜点高大上的
1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.List; 4 5 6 7 8 9 //class ListNode {10 // public int val;11 // public ListNode next;12 // ListNode(int x) {13 // val = x;14 // next = null;15 // }16 // }17 18 public class Solution {19 List<Integer> result = new ArrayList<Integer>();20 21 public List<Integer> spiralOrder(int[][] matrix) {22 if(null == matrix || matrix.length == 0)23 return result;24 25 else if(matrix.length == 1 && matrix[0].length == 1) //只有一个元素直接添加26 result.add(matrix[0][0]);27 else if(matrix[0].length == 1){ //竖条28 for(int i = 0; i < matrix.length; i++){29 result.add(matrix[i][0]); //直接添加30 } 31 }32 else if(matrix.length == 1){ //横条33 for(int i = 0; i < matrix[0].length; i++){34 result.add(matrix[0][i]);35 }36 }37 else {38 for(int i = 0; i < matrix[0].length; i++){ //添加第一排39 result.add(matrix[0][i]);40 }41 for(int i = 1; i < matrix.length; i++){ //添加最后一竖42 result.add(matrix[i][matrix[0].length - 1]);43 }44 for(int i = matrix[0].length - 2; i >= 0; i--){ //添加最后一排45 result.add(matrix[matrix.length - 1][i]);46 }47 for(int i = matrix.length - 2; i >= 1;i--){ //添加第一排48 result.add(matrix[i][0]);49 }50 if(matrix.length - 2 != 0 && matrix[0].length - 2 != 0){51 int next[][] = new int[matrix.length - 2][matrix[0].length - 2];52 for(int i = 1; i < matrix.length - 1; i++){53 for(int j = 1; j < matrix[0].length - 1;j++){54 next[i - 1][j - 1] = matrix[i][j];55 }56 }57 spiralOrder(next); //递归求解下一个矩阵的值58 }59 60 }61 62 return result;63 }64 }
Spiral Matrix
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。