LeetCode Top Interview Questions 54. Spiral Matrix (Java版; Medium)
题目描述
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
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]
classSolution{public List<Integer>spiralOrder(int[][] matrix){
List<Integer> list =newArrayList<>();if(matrix.length==0|| matrix[0].length==0){return list;}int n = matrix.length, m = matrix[0].length;int top=0, down=n-1, left=0, right=m-1;while(top<=down && left<=right){//left to rightfor(int j=left; j<=right; j++){
list.add(matrix[top][j]);}
top++;//up to downfor(int i=top; i<=down; i++){
list.add(matrix[i][right]);}
right--;//right to leftif(top<=down){for(int j=right; j>=left; j--){
list.add(matrix[down][j]);}}
down--;//down to topif(left<=right){for(int i=down; i>=top; i--){
list.add(matrix[i][left]);}}
left++;}return list;}}