1706. 球会落何处

36 阅读1分钟

题目:
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
}