給定乙個含有 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 由題...