摘要:螺旋矩陣給定一個包含個元素的矩陣行列,請按照順時針螺旋順序,返回矩陣中的所有元素。每次轉(zhuǎn)向或都會自減。循環(huán)可操作性很高,可以直接操作索引坐標(biāo)改變遍歷方式,不再贅述。
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)看,分別是:向下 橫坐標(biāo)自增1,到2;向左:縱坐標(biāo)自減1 ,到0;向上橫坐標(biāo)自減1,到1;向右縱坐標(biāo)自增1,到2
? 假如m*n的矩陣,從(0,m-1)開始,向下移動n-1次到達(dá)最下面,再向左m-1次,向上n-2次,向右m-2次,接著就是:向下n-3,向左m-3,向上n-4,向右m-4。每次轉(zhuǎn)向m或n都會自減1。
? 這是我的思路,網(wǎng)上很多都是直接操作索引坐標(biāo),我覺得不是很好理解,因?yàn)槌^一個螺旋的矩陣,每次都要更改參考坐標(biāo),不過兩種方法本質(zhì)差別不大
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 注意點(diǎn):
? 先判斷是否為空數(shù)組,判斷條件順序不能顛倒。因?yàn)槿绻?matrix.length==0 判斷為true,則后面的 matrix[0].length==0 不會再判斷,即返回空數(shù)組;但是matrix[0].length==0 在前時,如果輸入數(shù)組為空,matrix[0] 會報(bào)錯因?yàn)閙atrix并沒有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注意點(diǎn):? python沒有switch...case...語句。for循環(huán)可操作性很高,可以直接操作索引坐標(biāo)改變遍歷方式,不再贅述。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44125.html
摘要:螺旋矩陣給定一個包含個元素的矩陣行列,請按照順時針螺旋順序,返回矩陣中的所有元素。每次轉(zhuǎn)向或都會自減。循環(huán)可操作性很高,可以直接操作索引坐標(biāo)改變遍歷方式,不再贅述。 54:Spiral Matrix 螺旋矩陣 Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix i...
摘要:復(fù)雜度思路注意循環(huán)條件。代碼注意循環(huán)條件,要用而不是除以,因?yàn)榫葴?zhǔn)換問題只有一行或者一列的時候,就不要再繼續(xù)搜索了 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...
摘要:題目要求按照順時針方向旋轉(zhuǎn)訪問數(shù)組中的元素思路一按行遍歷,轉(zhuǎn)化為因?yàn)椴辉试S跳躍插入,也就是說如果插入的大于的,就會報(bào)出。思路二利用順序插入為了避免類型轉(zhuǎn)化帶來的不必要的性能下降,最好直接利用順序插入,一次遍歷數(shù)組。 題目要求 Given a matrix of m x n elements (m rows, n columns), return all elements of the ...
摘要:代碼添加該圈第一行添加最后一列添加最后一行添加第一列如果是奇數(shù),加上中間那個點(diǎn)后續(xù)如果在中,給出的是和來代表行數(shù)和列數(shù),該如何解決和的本質(zhì)區(qū)別就是一個是任意長方形,一個是正方形,所以中不需要判斷最后一行或者最后一列。 Spiral Matrix I Given a matrix of m x n elements (m rows, n columns), return all ele...
摘要:分布式的管理和當(dāng)我在談?wù)摷軜?gòu)時我在談啥狀態(tài)碼詳解無狀態(tài)協(xié)議和請求支持哪些方法分層協(xié)議棧有哪些數(shù)據(jù)結(jié)構(gòu)運(yùn)用場景說說你常用的命令為什么要有包裝類面向?qū)ο蟮奶卣魇巧妒巧队惺裁春锰幭到y(tǒng)設(shè)計(jì)工程在線診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當(dāng)我在談?wù)揜estFul架構(gòu)時我在談啥?...
閱讀 2082·2021-11-02 14:48
閱讀 2760·2019-08-30 14:19
閱讀 2929·2019-08-30 13:19
閱讀 1297·2019-08-29 16:17
閱讀 3230·2019-08-26 14:05
閱讀 2987·2019-08-26 13:58
閱讀 3075·2019-08-23 18:10
閱讀 1105·2019-08-23 18:04