您的位置:首页 > 其它

lintcode,螺旋矩阵

2016-12-15 13:11 267 查看
给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。

样例

给定如下矩阵:

[

[ 1, 2, 3 ],

[ 4, 5, 6 ],

[ 7, 8, 9 ]

]

应返回 [1,2,3,6,9,8,7,4,5]。

一刷没ac

解题思路:定义左上角和右下角边界,螺旋遍历,需要注意的时候要判断是否在同一行和同一列,否则不需要转四次。

public class Solution {
/**
* @param matrix a matrix of m x n elements
* @return an integer list
*/
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> result = new ArrayList<Integer>();
if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return result;
int li = 0, lj = 0, ri = matrix.length-1, rj = matrix[0].length-1;
while(li <= ri && lj <= rj){
int i = li, j = lj;
while(j <= rj){
result.add(matrix[i][j]);
j++;
}
i++;
j--;
while(i <= ri){
result.add(matrix[i][j]);
i++;
}
i--;
j--;
while(j > lj && li != ri){
result.add(matrix[i][j]);
j--;
}
while(i > li && lj != rj){
result.add(matrix[i][j]);
i--;
}
li++;
lj++;
ri--;
rj--;
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lintcode