在大小為n x n
的網格grid
上,每個單元格都有一盞燈,最初燈都處於關閉狀態。
給你乙個由燈的位置組成的二維陣列lamps
,其中lamps[i] = [rowi, coli]
表示開啟位於grid[rowi][coli]
的燈。即便同一盞燈可能在lamps
中多次列出,不會影響這盞燈處於開啟狀態。
當一盞燈處於開啟狀態,它將會照亮自身所在單元格以及同一行、同一列和兩條對角線上的所有其他單元格。
另給你乙個二維陣列queries
,其中queries[j] = [rowj, colj]
。對於第j
個查詢,如果單元格[rowj, colj]
是被照亮的,則查詢結果為1
,否則為0
。在第j
次查詢之後 [按照查詢的順序] ,關閉位於單元格grid[rowj][colj]
上及相鄰 8 個方向上(與單元格grid[rowi][coli]
共享角或邊)的任何燈。
返回乙個整數陣列ans
作為答案,ans[j]
應等於第j
次查詢queries[j]
的結果,1
表示照亮,0
表示未照亮。
示例 1:
輸入:n = 5, lamps = [[0,0],[4,4]], queries = [[1,1],[1,0]]
輸出:[1,0]
解釋:最初所有燈都是關閉的。在執行查詢之前,開啟位於 [0, 0] 和 [4, 4] 的燈。第 0 次查詢檢查 grid[1][1] 是否被照亮(藍色方框)。該單元格被照亮,所以 ans[0] = 1 。然後,關閉紅色方框中的所有燈。
第 1 次查詢檢查 grid[1][0] 是否被照亮(藍色方框)。該單元格沒有被照亮,所以 ans[1] = 0 。然後,關閉紅色矩形中的所有燈。
示例 2:
輸入:n = 5, lamps = [[0,0],[4,4]], queries = [[1,1],[1,1]]
輸出:[1,1]
示例 3:
輸入:n = 5, lamps = [[0,0],[0,4]], queries = [[0,4],[0,1],[1,4]]
輸出:[1,1,0]
理解就是,給定的lamps表示乙個燈的序列,該序列中的每個燈所在行和列以及對角線上的燈是亮的,表示這個燈是開啟
的,並且序列之間的燈導致亮是疊加的,互不干涉,現在需要遍歷queries中的位置,每遍歷乙個燈,就需要把這個位置的燈緊鄰的燈都設定為關閉
// 官方題解,golang練手
func gridillumination(n int, lamps int, queries int) int
points := map[pair]bool{}
row := map[int]int{}
col := map[int]int{}
diagonal := map[int]int{}
antidiagonal := map[int]int{}
for _, lamp := range lamps
if points[p]
points[p] = true
row[r]++
col[c]++
diagonal[r-c]++
antidiagonal[r+c]++
}ans := make(int, len(queries))
for i, query := range queries
for x := r - 1; x <= r + 1; x++ ]
delete(points, pair)
row[x]--
col[y]--
diagonal[x-y]--
antidiagonal[x+y]--}}
}return ans
}
Leetcode 1001 網格照明(map)
在大小為 n x n 的網格 grid 上,每個單元格都有一盞燈,最初燈都處於 關閉 狀態。給你乙個由燈的位置組成的二維陣列 lamps 其中 lamps i rowi,coli 表示 開啟 位於 grid rowi coli 的燈。即便同一盞燈可能在 lamps 中多次列出,不會影響這盞燈處於 開...
960網格系統
可以幫助我們在ps中快速布局 12欄,16欄,24欄 我們也可以利用css樣式表模板快速寫網頁 兩欄布局網頁部分 id class container 12 class grid 12 工具欄div div div class container 12 id header class grid 2 ...
1 網格系統
第乙個例子 建立一行 然後,新增是需要的列 col 類中設定 第乙個星號 表示響應的裝置 sm,md,lg 或 xl,第二個星號 表示乙個數字,同一行的數字相加為 12。第二個例子 不在每個col上新增數字,讓 bootstrap 自動處理布局,同一行的每個列寬度相等 兩個 col 每個就為 50 ...