golang 對角線遍歷

2021-10-24 04:45:35 字數 2245 閱讀 5966

給定乙個含有 m x n 個元素的矩陣(m 行,n 列),請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。

示例:

輸入:[[

1,2,

3],[

4,5,

6],[

7,8,

9]]輸出:[1

確定總劃線次數,m+n-1

記錄每道線起點座標

根據起始點座標推算出該線上的所有元素

根據奇偶性決定線元素是否需要翻轉

區分正方形與非正方形,右凸出還是下凸出

考慮一些特殊的臨界處理

第2 步起始點圖意如下,被圈禁數字

)}

下述被塗部分即為原資料mn,將其成為新的正方形zz,然後過濾走線取資料

借助新構建的正方矩形取值,達到邏輯簡潔方便,直觀。

type element struct

// 將原矩形轉為正方形

func

convert2square

(src [

]int)[

]element

else

// 構造正方形

rs :=

element

for i :=

0; i < z; i++

// 填充原資料

for i :=

0; i < m; i++}}

return rs

}// 正方形解析

func

square

(matrix [

]element)

int reverse :=

true

for i :=

0; i < n*

2; i++

xy :=

intif i < n

}if i > n

} tmp :=

intfor

xy[0]

+=1xy[1]

-=1if xy[0]

> n-

1|| xy[1]

<0}

if reverse

l =(l, tmp...

) reverse =

!reverse

} fmt.

println

(l)return l

}// 資料翻轉

func

reverseslice

(arr [

]int

)}

思路簡單,可以減少不必要的條件約束,避免不必要的邏輯混亂 。

對角線遍歷

給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。1 索引和為偶數 元素在第一行,往右走 元素在最後一列,往下走 其他情況,往右上走 2 索引和為奇數 元素在第一列,往下走 元素在最後一行,往右走 其他情況,往左下走 clas...

phpexcel遍歷所有列 對角線遍歷

給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。示例 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,4,7,5,3,6,8,9 解釋 說明 給定矩陣中的元素總數不會超過 100000 關鍵在於找規律,將規律歸類,但...

遍歷對角線 力扣498

給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。示例 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,4,7,5,3,6,8,9 解釋 對角線遍歷,那麼我們可以先遍歷所有的正向對角線,即 1 2,4 3,5,7 由題...