题目:
leetcode.cn/problems/wh…
算法:
方法一:模拟
func findBall(grid [][]int) []int {
n, m := len(grid), len(grid[0])
ans := make([]int, m)
var find func(i, j int) int
find = func(i, j int) int {
// fmt.Println(i, j)
// 考虑到卡在墙壁上的情况,要先判断j是否越界,j越界就卡在墙壁上了
if j < 0 || j >= m {
return -1
}
if i == n {
return j
}
if grid[i][j] == 1 {
if j + 1 < m && grid[i][j] == grid[i][j + 1] {
return find(i + 1, j + 1)
} else {
return -1
}
} else {
if j - 1 >= 0 && grid[i][j] == grid[i][j - 1] {
return find(i + 1, j - 1)
} else {
return -1
}
}
return -1
}
for j := 0; j < m; j ++ {
ans[j] = find(0, j)
}
return ans
}