摘要:螺旋矩陣給定一個包含個元素的矩陣行列,請按照順時針螺旋順序,返回矩陣中的所有元素。每次轉向或都會自減。循環可操作性很高,可以直接操作索引坐標改變遍歷方式,不再贅述。
54:Spiral Matrix 螺旋矩陣
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。
Example 1:
Input: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] Output: [1,2,3,6,9,8,7,4,5]
Example 2:
Input: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] Output: [1,2,3,4,8,12,11,10,9,5,6,7]解題思路:
? 參考例二,觀察索引改變方式:(0,0)--->(0,3)、(0,3)--->((2,3)--->(2,0)--->(1,0)--->(1,2)
? 從(0,3)看,分別是:向下 橫坐標自增1,到2;向左:縱坐標自減1 ,到0;向上橫坐標自減1,到1;向右縱坐標自增1,到2
? 假如m*n的矩陣,從(0,m-1)開始,向下移動n-1次到達最下面,再向左m-1次,向上n-2次,向右m-2次,接著就是:向下n-3,向左m-3,向上n-4,向右m-4。每次轉向m或n都會自減1。
? 這是我的思路,網上很多都是直接操作索引坐標,我覺得不是很好理解,因為超過一個螺旋的矩陣,每次都要更改參考坐標,不過兩種方法本質差別不大
java:class Solution { public ListspiralOrder(int[][] matrix) { List nums=new ArrayList(); if (matrix.length==0||matrix[0].length==0)return nums ; int row=matrix.length-1,col=matrix[0].length-1,m=0,n=0,i=-1,tmp=0; while (row>=0&&col>=0){ switch (i++%4){ case 0: for (tmp=0;tmp 注意點:
? 先判斷是否為空數組,判斷條件順序不能顛倒。因為如果 matrix.length==0 判斷為true,則后面的 matrix[0].length==0 不會再判斷,即返回空數組;但是matrix[0].length==0 在前時,如果輸入數組為空,matrix[0] 會報錯因為matrix并沒有0號索引。
python3:class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if len(matrix)==0 or len(matrix[0])==0:return [] nums=[];m=0;n=0;row=len(matrix)-1;col=len(matrix[0])-1;flag=0; for n in range(col+1):nums.append(matrix[m][n]) while row>=0 and col>=0: if flag % 4 == 0: for i in range(row): m+=1 nums.append(matrix[m][n]) row -= 1 elif flag % 4==1: for i in range(col): n-=1 nums.append(matrix[m][n]) col -= 1 elif flag % 4 == 2: for i in range(row): m-=1 nums.append(matrix[m][n]) row -= 1 elif flag % 4 == 3: for i in range(col): n+=1 nums.append(matrix[m][n]) col -= 1 flag+=1 return nums注意點:? python沒有switch...case...語句。for循環可操作性很高,可以直接操作索引坐標改變遍歷方式,不再贅述。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74994.html
摘要:螺旋矩陣給定一個包含個元素的矩陣行列,請按照順時針螺旋順序,返回矩陣中的所有元素。每次轉向或都會自減。循環可操作性很高,可以直接操作索引坐標改變遍歷方式,不再贅述。 54:Spiral Matrix 螺旋矩陣 Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix i...
摘要:復雜度思路注意循環條件。代碼注意循環條件,要用而不是除以,因為精度準換問題只有一行或者一列的時候,就不要再繼續搜索了 LeetCode[54] Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. Fo...
摘要:題目要求按照順時針方向旋轉訪問數組中的元素思路一按行遍歷,轉化為因為不允許跳躍插入,也就是說如果插入的大于的,就會報出。思路二利用順序插入為了避免類型轉化帶來的不必要的性能下降,最好直接利用順序插入,一次遍歷數組。 題目要求 Given a matrix of m x n elements (m rows, n columns), return all elements of the ...
摘要:代碼添加該圈第一行添加最后一列添加最后一行添加第一列如果是奇數,加上中間那個點后續如果在中,給出的是和來代表行數和列數,該如何解決和的本質區別就是一個是任意長方形,一個是正方形,所以中不需要判斷最后一行或者最后一列。 Spiral Matrix I Given a matrix of m x n elements (m rows, n columns), return all ele...
摘要:分布式的管理和當我在談論架構時我在談啥狀態碼詳解無狀態協議和請求支持哪些方法分層協議棧有哪些數據結構運用場景說說你常用的命令為什么要有包裝類面向對象的特征是啥是啥有什么好處系統設計工程在線診斷系統設計與實現索引背后的數據結構及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當我在談論RestFul架構時我在談啥?...
閱讀 1548·2023-04-26 02:50
閱讀 3555·2023-04-26 00:28
閱讀 1941·2023-04-25 15:18
閱讀 3225·2021-11-24 10:31
閱讀 1001·2019-08-30 13:00
閱讀 1008·2019-08-29 15:19
閱讀 1778·2019-08-29 13:09
閱讀 2985·2019-08-29 13:06