日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 54. 螺旋矩阵

發布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 54. 螺旋矩阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

難度:中等
頻次:114
題目:給你一個 m 行 n 列的矩陣 matrix ,請按照 順時針螺旋順序 ,返回矩陣中的所有元素。


解題思路:按要求模擬遍歷(重點在構造xy的坐標上)
注意:

  • 需要定義四個方向的走向 0:右 1:下 2:左 3:上
  • 根據上面的四個方向定義每次走向xy的變化 int[][] step={{0,1},{1,0},{0,-1},{-1,0}};
  • ArrayList的元素個數要用size()
  • 遍歷過的要標記 Integer.MAX_VALUE;
  • 要記得判斷是否走出了邊界或者走過了已經走過的元素,如果是,要按順序變換方向

代碼

class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res=new ArrayList<>();int row=matrix.length;int col=matrix[0].length;//定義四個方向 // 0:右 1:下 2:左 3:上//二維數組。matrix[x][y] x代表的第幾行 y代表的第幾列int[][] step={{0,1},{1,0},{0,-1},{-1,0}};//標記變更方向的值int direction=0;//起始位置為00int x=0,y=0;//如果res的大小還沒到矩陣的元素個數,繼續循環while(res.size()<row*col){res.add(matrix[x][y]);//如果已經走過,用integer的最大值標記matrix[x][y]=Integer.MAX_VALUE; int xnext=x+step[direction%4][0];int ynext=y+step[direction%4][1];//判斷下一步要走過的元素是否超除矩陣的邊界并且是否已經走過了if(xnext<0||xnext>=row||ynext<0||ynext>=col||matrix[xnext][ynext]==Integer.MAX_VALUE){//走到盡頭或者走過了就得變更方向direction++;xnext=x+step[direction%4][0];ynext=y+step[direction%4][1];} x=xnext;y=ynext; }return res;} }

總結

以上是生活随笔為你收集整理的leetcode 54. 螺旋矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。