哈希表
对于每个灯的位置使用记录一下,同时记录该灯所在的行、列、对角、反对角 的值都+1,应对重复照亮
对于每个查找,查找其行,列、对角、反对角是否大于0 来判断是否点亮
同时对该查找的领域进行 是否有灯判定,然后 减去相应的 行、列、对角、反对角值
class Solution:
def gridIllumination(self, n: int, lamps: List[List[int]], queries: List[List[int]]) -> List[int]:
row, col, gle, ope = defaultdict(int),defaultdict(int),defaultdict(int),defaultdict(int)
on =defaultdict(int)
light = []
res = []
mat =[[-1,1],[0,1],[1,1],
[-1,0],[0,0],[1,0],
[-1,-1],[0,-1],[1,-1],
]
for i,j in lamps:
if on[i,j] ==0:
on[i,j] = 1
row[i] +=1
col[j] +=1
gle[j-i+n-1] +=1
ope[i+j] +=1
for i ,j in queries:
if row[i] or col[j] or gle[j-i+n-1] or ope[i+j]:
res.append(1)
else :
res.append(0)
continue
for [dix,diy] in mat:
x,y = i+dix,j+diy
if on[x,y] :
on[x,y] = 0
row[x] -=1
col[y] -=1
gle[y-x+n-1] -=1
ope[x+y] -=1
return res
构造 两个值分别模拟 1/2 和1/5 的概率
然后组成1/10
class Solution:
def rand10(self):
"""
:rtype: int
"""
while True:
tmp = rand7()
tmpb =rand7()
if tmp ==7 or tmpb>5:
continue
else :
res = 0
if tmp%2:
res =5
return res+tmpb
|