??嗨,大家好,我是袁廚(因為酷愛做飯,所以自己考取了廚師證),之前一直看大家寫的博客,學到了很多東西,然后最近萌生了自己寫的想法,將自己知道的分享給需要的同學,以后每天會為大家分享leetcode精選題目的各種題解,并且每周會整理一下該周刷的所有題目,及解題框架,大家微信搜索【程式員愛做飯】關注我吧!
54.螺旋矩陣
- 題目描述
- 順時針遍歷
- 做題思路
- 題目代碼
- 總結
題目描述

順時針遍歷
做題思路
其實這個題目還算是比較容易,但是因為可能處理不好邊界情況,所以還是需要細心思考,這個題目我師兄面試的時候就遇到了,所以很有學習價值,主要思想就是通過順時針進行一層一層的進行遍歷,然后最后在上方和左方處理邊界情況,然后就實作了螺旋遍歷,

箭頭代表遍歷順序,長度代表元素個數,總的思想就是這樣的,
題目代碼
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> list = new ArrayList<>();
//防止出現空的情況,先將其排除
if(matrix.length==0||matrix==null||matrix[0].length==0){
return list;
}
//得出陣列的長和寬
int len = matrix.length;
int widlen = matrix[0].length;
//最小的那個加一除以2,則為最小 遍歷次序
for(int i=0;i<(Math.min(len,widlen)+1)/2;i++){
//第一條邊遍歷情況
for(int j =i;j<widlen-i;j++){
list.add(matrix[i][j]);
}
//第二條邊遍歷情況
for(int j=i+1;j<len-i;j++){
list.add(matrix[j][widlen-i-1]);
}
//第三條遍歷情況
for(int j = widlen-i-2;j>=i;j--){
//防止出現重復遍歷的情況
if(list.size()==len*widlen){
break;
}
list.add(matrix[len-i-1][j]);
}
//第四條遍歷情況
for(int j = len - i-2;j>i;j--){
//防止出現重復遍歷的情況
if(list.size()==len*widlen){
break;
}
list.add(matrix[j][i]);
}
}
return list;
}
}
?
?
總結
學會這個題目可以直接解決兩道題,螺旋插入的題目同樣也可以解決,
更多題目總結請掃描下面二維碼,一塊刷題呀,

作者:LeetCode
鏈接:https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode/
來源:力扣(LeetCode)
著作權歸作者所有,商業轉載請聯系作者獲得授權,非商業轉載請注明出處,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/179341.html
標籤:其他
上一篇:重磅推薦!阿里巴巴技術專家認證的Java系統性能圣經,太香了
下一篇:H3C(25)——IRF
