54. Spiral Matrix

Given a matrix of m x n elements (m row

Example 1:

Input:
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
Output: [1,2,3,6,9,8,7,4,5]
Example 2:

Input:
[
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9,10,11,12]
]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]
Seen this question in a real interview before?  
Difficulty:Medium
Total Accepted:167.1K
Total Submissions:594K
Contributor:LeetCode
Subscribe to see which companies asked this question.

Related Topics 

Similar Questions 
Spiral Matrix II
Java	

1
class Solution {
2
  public List<Integer> spiralOrder(int[][] matrix) {
3
        if (matrix.length == 0) {
4
            return new ArrayList<>();
5
        }
6
        List<Integer> arrays = new ArrayList<>();
7
        for (int i = 0; i < matrix[0].length; i++) {
8
            arrays.add(matrix[0][i]);
9
​
10
        }
11
        for (int i = 1; i < matrix.length; i++) {
12
            arrays.add(matrix[i][matrix[i].length - 1]);
13
        }
14
​
15
        for (int i = matrix[0].length - 2; i >= 0 && matrix.length >= 2; i--) {
16
            arrays.add(matrix[matrix.length - 1][i]);
17
        }
18
        for (int i = matrix.length - 2; i >= 1 && matrix[0].length > 1; i--) {
19
            arrays.add(matrix[i][0]);
20
        }
21
        if (matrix.length - 2 <= 0) {
22
            return arrays;
23
        }
24
        if (matrix[0].length == 0 || matrix[0].length - 2 <= 0) {
25
            return arrays;
26
        }
27
​
28
​
29
        int[][] newArray = new int[matrix.length - 2][matrix[0].length - 2];
30
        for (int i = 0; i < newArray.length; i++) {
31
            System.arraycopy(matrix[i + 1], 1, newArray[i], 0, newArray[i].length);
32
        }
33
        List<Integer> integers = spiralOrder(newArray);
34
        arrays.addAll(integers);
35
        return arrays;
36
    }
37
}
  Custom Testcase( Contribute  )

s, n columns), return all elements of the matrix in spiral order.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值