记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步
997. Find the Town Judge 找到小镇的法官
people用来记录相信别人的人出现的次数
tmp用来记录被别人相信的次数
拥有法官满足:
1.相信别人的人个数为N-1 = len(people) 只有法官不相信别人 别人都相信法官
2.被别人相信的最大值为N-1 法官被N-1个人相信
def findJudge(N, trust):
"""
:type N: int
:type trust: List[List[int]]
:rtype: int
"""
from collections import defaultdict
if N==1 and len(trust)==0:
return 1
people = set()
tmp = defaultdict(int)
for x in trust:
people.add(x[0])
tmp[x[1]]+=1
if len(people) != N-1:
return -1
ans=max(tmp,key=tmp.get)
if tmp[ans]!=N-1:
return -1
else:
return ans
1042. Flower Planting With No Adjacent 不邻接植花
遍历路径
使用pathmap存储每个花坛连通的其它花坛编号
遍历花坛i:
花坛i的选择有flower[1,2,3,4]
若与花坛i相连的花坛j已经确定为x 并且x在可选的flower内
则将这个选择去除 flower.remove()
最后在可选择范围内选择一个(第一个) 当做花坛i的种类
def gardenNoAdj(N, paths):
"""
:type N: int
:type paths: List[List[int]]
:rtype: List[int]
"""
from collections import defaultdict
pathmap = defaultdict(list)
ans = [0]*(N+1)
for x,y in paths:
pathmap[x].append(y)
pathmap[y].append(x)
for i in range(N+1):
flower=[1,2,3,4]
for j in pathmap[i]:
if ans[j]!=0 and ans[j] in flower:
flower.remove(ans[j])
ans[i] = flower[0]
return(ans[1:])