給定乙個含有 m x n 個元素的矩陣(m 行,n 列),請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。
示例:
輸入:
[ [ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]輸出: [1,2,4,7,5,3,6,8,9]
解釋:
說明:
給定矩陣中的元素總數不會超過 100000 。
關鍵在於找規律,將規律歸類,但這並不容易。在找規律的時候往往更大的矩陣更容易發現,因為更大的場景會將主要規律凸顯出來,自己可以畫乙個4行4列或5行5列的矩陣找下。
規律就兩類,一類是斜上以及斜上到頂後向哪走;另一類是斜下以及斜下到底後向哪走。
class solution:
def finddiagonalorder(self, matrix: list[list[int]]) -> list[int]:
if not matrix:
return
r = len(matrix)
c = len(matrix[0])
i = j = 0
l = [matrix[0][0]]
while len(l) != r * c:
# 第一類:斜上,這也是初始步驟
# 首先能斜上就先斜上
while i - 1 >= 0 and j + 1 < c:
i = i - 1
j = j + 1
# 斜上到頂能右就右,不能右就下
if j + 1 < c:
j = j + 1
elif i + 1 < r:
i = i + 1
# 第二類:斜下
# 能斜下就斜下
while i + 1 < r and j - 1 >= 0:
i = i + 1
j = j - 1
# 斜下到底能下就下,不能下就右
if i + 1 < r:
i = i + 1
elif j + 1 < c:
j = j + 1
return l
對角線遍歷
給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。1 索引和為偶數 元素在第一行,往右走 元素在最後一列,往下走 其他情況,往右上走 2 索引和為奇數 元素在第一列,往下走 元素在最後一行,往右走 其他情況,往左下走 clas...
golang 對角線遍歷
給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。示例 輸入 1,2,3 4,5,6 7,8,9 輸出 1 確定總劃線次數,m n 1 記錄每道線起點座標 根據起始點座標推算出該線上的所有元素 根據奇偶性決定線元素是否需要翻轉...
phpExcel列資料自動換行的方法
文字 str 文字1 chr 10 文字2 寫入單元格資料 o bj phpe xcel ge tact ives heet se tcel lval ue a1 objphpexcel getactivesheet setcellvalue a1 objphp exce l ge tact ive...