作者JIWP (神楽めあ的錢包)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Thu Nov 21 23:21:55 2024
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