大佬 为啥我这样写只有60%,想到走过的路要再走了,但是还是没过 func numberOfPatrolBlocks(m int, n int, block [][]int32) (res int32) { dx := []int{0, 1, 0, -1} dy := []int{1, 0, -1, 0} x, y, d := 0, 0, 0 st := make([][]int, m) for i := 0; i < m; i++ { st[i] = make([]int, n) } var tt func(int, int) bool tt = func(a, b int) bool { if a >= 0 && a < m && b >= 0 && b < n && st[a][b] < 1000 && block[a][b] == 0 { return true } return false } var check func(int, int) bool check = func(a, b int) bool { for i := 0; i < 4; i++ { k := (d + i) % 4 aa, bb := x+dx[k], y+dy[k] if tt(aa, bb) { d = k return true } } return false } for true { if st[x][y] == 0 { //fmt.Println(x, y) res++ } st[x][y]++ if !check(x, y) { break } x, y = x+dx[d], y+dy[d] } return }
点赞 3

相关推荐

牛客97567122...:我最近投的几个,都是要不已读不回,要不不回,还有直接拒绝的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务