给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/spiral-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码:
class Solution {
public List<Integer> spiralOrder(int[][] nums) {
if (nums == null || nums.length == 0 || nums[0].length == 0) {
return new LinkedList<>();
}
int l = 0;
int r = nums[0].length - 1;
int u = 0;
int d = nums.length - 1;
List<Integer> list = new LinkedList<>();
while (l <= r && u <= d) {
for (int i = l; i <= r; i++) {
list.add(nums[u][i]);
}
u++;
for (int i = u; i <= d; i++) {
list.add(nums[i][r]);
}
r--;
for (int i = r; i >= l && u <= d; i--) {
list.add(nums[d][i]);
}
d--;
for (int i = d; i >= u && l <= r; i--) {
list.add(nums[i][l]);
}
l++;
}
return list;
}
}