溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷

發(fā)布時間:2021-12-15 11:35:38 來源:億速云 閱讀:319 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!


題目描述:“給定一個含有M*N個元素的矩陣,請以對角線遍歷的順序返回矩陣中的元素”

(矩陣中元素<=10000)


示例:

matrix=[[1, 2, 3],[4, 5, 6],[7, 8, 9],]
     


[1, 2, 4, 7, 5, 3, 6, 8, 9]
     

LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷


 

算法思路

尋找元素遍歷的規(guī)律

LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷

按照對角線將元素劃分,你會發(fā)現(xiàn)一些規(guī)律:

  • 將每一個對角線上的元素各自看成一組,對角線數(shù)組的個數(shù)如下:
    (len(matrix)+len(matrix[0])-1)  
  • 如果將對角線數(shù)組從左向右數(shù),你會發(fā)現(xiàn) 第偶數(shù)個對角線數(shù)組 在讀取時應(yīng)該 逆序 讀取
  • 最終要的規(guī)律:在同一個對角線數(shù)組中的元素下標(biāo)之后相等

LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷

算法步驟:

  1.  先按照矩陣遍歷的正常順序遍歷元素,過程中計算元素 下標(biāo)和
  2. 將下標(biāo)和一樣的元素存入對應(yīng)的對角線數(shù)組中(設(shè)置一個 二維數(shù)組 存儲對角線數(shù)組)
    同時要注意: 二維數(shù)組中每一個一維數(shù)組的對應(yīng)下標(biāo)其實正好就等于之前計算的元素下標(biāo)記和  
  3. 遍歷完成后,將對角線二維數(shù)組中的一維數(shù)組再添加到函數(shù)最后要返回的數(shù)組中。其中要進行判斷: 偶數(shù)個數(shù)組要逆序讀取

LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷

LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷


本文由“壹伴編輯器”提供技術(shù)支持

注意:

  • 一定要判斷輸入為 的情況
  • 輸入可沒說一定是方陣,所以在自己舉例推導(dǎo)時不要取特殊情況
  • 既然所有元素最終都要返回,那就先把每個都考慮進單個數(shù)組,最后再排序


本文由“壹伴編輯器”提供技術(shù)支持

 

二維數(shù)組的創(chuàng)建問題

創(chuàng)建二維數(shù)組的坑LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷

本文題目在之前的算法中一直這樣創(chuàng)建二維數(shù)組:

diagonal_list = [[]*(len(matrix)+len(matrix[0]-1)]

但是一直報錯

LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷

原來二維數(shù)組的創(chuàng)建有坑?。。。。。。?!

a = [ []*3 ]a[0].append(1)
>>> a=[ [1], [1], [1] ]

都變成1了,可明明僅設(shè)置了第一個數(shù)組呀?????

原來:在創(chuàng)建一個如果利用乘法創(chuàng)建二維數(shù)組的話,或者不是二維數(shù)組,僅僅是一維數(shù)組乘以n,乘法代表的是引用,后面不論多少個數(shù)組都是引用第一個數(shù)組LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷

正確的創(chuàng)建方法:利用for循環(huán)

a = [] for i in range(n)

以上是“LeetCode二維數(shù)組中如何實現(xiàn)對角線遍歷”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI