题目:
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
实现代码:
java
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int m=matrix.length;
int n = matrix[0].length;
List<Integer> res=new ArrayList<>(); //list接口实现arrayList这个数组
int l=0,r=n-1,t=0,b=m-1;
while(true){
for(int i=l;i<=r;i++){
res.add(matrix[t][i]);
}
if(++t>b){
break;
}
for(int i=t;i<=b;i++){
res.add(matrix[i][r]);
}
if(l>--r){
break;
}
for(int i=r;i>=l;i--){
res.add(matrix[b][i]);
}
if(t>--b){
break;
}
for(int i=b;i>=t;i--){
res.add(matrix[i][l]);
}
if(++l>r){
break;
}
}
return res;
}
}
思路讲解:
这边是学习了Krahets大佬的思路,感兴趣的小伙伴可以去力扣找这个题去看看。
这道题一开始我也像力扣59题一样写了count以及target,但是在执行的时候发现循环只执行了第一圈,仔细思考后发现没有注意到while语句,应该是没有退出条件循环被写死了,所以力扣测试环境应该也怕死循环所以就在第一圈结束给我停止了,所以大家可以看到实现代码中while里的条件是true,只要是后面能有退出条件就能解决这个问题,而这题其他思路和59题没有太大差别,大家可以对比两道题目多去思考,动手去实现一下。这里再放一下链接,大家有兴趣多看看:https://blog.csdn.net/suibiansa_/article/details/145157858
共勉!