LeetCode-图-Easy

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步




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:])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值