给你一个
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]提示:
m == matrix.length
n == matrix[i].length
1
-100
主要得设置边界,把握边界的范围。可以设置left,right表示左边界和有边界(列边界);top和bottom为上边界和下边界(行边界)。然后保证左边不超过右边;上边不超过下边。每撞一次边界,对应的范围要发生改变
代码如下:
class Solution {
public List spiralOrder(int[][] matrix) {
服务器托管网List res = new ArrayList();
int left = 0;
int right = matrix[0].length-1;
int top = 0;
int bottom = matrix.length-1;
while(left= left && top = top && left
一个大佬的思路:走过的路置为0,然后拐弯的时候判断一下是不是已经走过了,如果走过了就计算一下新的方向。他的代码如下:
r, i, j, di, dj = [], 0, 0, 0, 1
if matrix != []:
for _ in range(len(matrix) * len(matrix[0])):
r.append(matrix[i][j])
matrix[i][j] = 0
if matrix[(i + di) % len(matr服务器托管网ix)][(j + dj) % len(matrix[0])] == 0:
di, dj = dj, -di
i += di
j += dj
return r
不得不说,真的很妙!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net