看板 Marginalman
2257. Count Unguarded Cells in the Grid 有m*n的二維矩陣 在這個二維矩陣上有守衛和牆壁 守衛可以看向4個方向(東西南北)直到被牆壁擋住 請問這個矩陣上有個cell是不會被守衛看到的? 思路: 老實照著題目做 建立1個二維矩陣 將守衛和牆壁的所在地點設為1 接著每個守衛往4個方向開始走直到碰到1為止,把走過的地方設成2 最後去算不是1、2的cell有幾個 golang code : func countUnguarded(m int, n int, guards [][]int, walls [][]int) int { arr := make([]byte, n*m) for _, val := range guards { arr[val[0]*n+val[1]] = 1 } for _, val := range walls { arr[val[0]*n+val[1]] = 1 } for _, val := range guards { i, j := val[0], val[1] for i_tmp := i + 1; i_tmp < m && arr[i_tmp*n+j] != 1; i_tmp++ { arr[i_tmp*n+j] = 2 } for i_tmp := i - 1; i_tmp > -1 && arr[i_tmp*n+j] != 1; i_tmp-- { arr[i_tmp*n+j] = 2 } for j_tmp := j + 1; j_tmp < n && arr[i*n+j_tmp] != 1; j_tmp++ { arr[i*n+j_tmp] = 2 } for j_tmp := j - 1; j_tmp > -1 && arr[i*n+j_tmp] != 1; j_tmp-- { arr[i*n+j_tmp] = 2 } } ans := 0 for i := 0; i < len(arr); i++ { if arr[i] == 0 { ans++ } } return ans } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.146.124 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1732202518.A.C4A.html