[#498] feat(FindDiagonalOrder): add golang solution

This commit is contained in:
2025-08-25 11:57:30 +08:00
parent b8a053eff1
commit f25337364b

View File

@@ -0,0 +1,45 @@
package main
import "fmt"
func findDiagonalOrder(mat [][]int) []int {
if len(mat) == 0 || len(mat[0]) == 0{
return []int{}
}
m := len(mat)
n := len(mat[0])
// maps
diagonals := make(map[int][]int)
for i:=0; i< m;i++{
for j:=0; j < n; j++{
index := i+j
diagonals[index] = append(diagonals[index], mat[i][j])
}
}
result := []int{}
for i:= 0; i< m+n-1; i++{
if i% 2 == 0{
reverse(diagonals[i])
result = append(result, diagonals[i]...)
}else{
result = append(result, diagonals[i]...)
}
}
return result
}
func reverse(slice []int){
left, right :=0, len(slice)-1
for left < right{
slice[left], slice[right] = slice[right], slice[left]
left++
right--
}
}