diff --git a/202508/498 FindDiagonalOrder/Go/main.go b/202508/498 FindDiagonalOrder/Go/main.go index e69de29..f3fe8dc 100644 --- a/202508/498 FindDiagonalOrder/Go/main.go +++ b/202508/498 FindDiagonalOrder/Go/main.go @@ -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-- + } +} \ No newline at end of file