package leetcode
func allCellsDistOrder(R int, C int, r0 int, c0 int) [][]int {
longRow, longCol, result := max(abs(r0-0), abs(R-r0)), max(abs(c0-0), abs(C-c0)), make([][]int, 0)
maxDistance := longRow + longCol
bucket := make([][][]int, maxDistance+1)
for i := 0; i <= maxDistance; i++ {
bucket[i] = make([][]int, 0)
}
for r := 0; r < R; r++ {
for c := 0; c < C; c++ {
distance := abs(r-r0) + abs(c-c0)
tmp := []int{r, c}
bucket[distance] = append(bucket[distance], tmp)
}
}
for i := 0; i <= maxDistance; i++ {
for _, buk := range bucket[i] {
result = append(result, buk)
}
}
return result
}
func max(a int, b int) int {
if a > b {
return a
}
return b
}
func abs(a int) int {
if a > 0 {
return a
}
return -a
}