题目链接:spiral-matrix
import java.util.ArrayList;
import java.util.List;
/**
*
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].
*
*/
public class SpiralMatrix {
// 21 / 21 test cases passed.
// Status: Accepted
// Runtime: 170 ms
// Submitted: 0 minutes ago
static List<Integer> spiralOrder(int[][] matrix) {
List<Integer> orders = new ArrayList<Integer>();
if(matrix.length == 0) return orders;
int m = matrix.length;
int n = matrix[0].length;
// up
// left right
// down
int left = 0;
int right = n - 1;
int up = 0;
int down = m - 1;
while(left <= right && up <= down) {
for(int i = left; i <= right; i ++) {
orders.add(matrix[up][i]);
}
up ++;
for(int i = up; i <= down; i ++) {
orders.add(matrix[i][right]);
}
right --;
for(int i = right; i >= left && up <= down; i --) {
orders.add(matrix[down][i]);
}
down --;
for(int i = down; i >= up && left <= right; i --) {
orders.add(matrix[i][left]);
}
left ++;
}
return orders;
}
public static void main(String[] args) {
// int[][] matrix = {{1,2, 3}, {4, 5, 6}, {7, 8, 9}};
int[][] matrix = {{2, 3}};
for (int n : spiralOrder(matrix)) {
System.out.print(n + ", ");
}
}
}