当前位置: 首页 > news >正文

LeetCode | 997.找到小镇的法官

在这里插入图片描述

这道题拿到后很明显是一个图论的简单出度入度问题,法官的标志就是图中出度为0,入度为n-1的结点,而且根据题目条件,满足这一条件的结点有且只有一个
但是我不知道力扣中关于图论的邻接表和邻接矩阵这些数据结构是需要自己写还是已经有现有的,我就自己写了个邻接表的类,然后根据条件返回法官结点,自然,多写了这么多代码,运行时间直接加倍,我直接垫底了555

class GraphAdjList:def __init__(self):self.graph = {}def add_vertex(self, vertex):if vertex not in self.graph:self.graph[vertex] = []def add_edge(self, vertex1, vertex2):if vertex1 in self.graph and vertex2 in self.graph:self.graph[vertex1].append(vertex2)def out_degree(self, vertex):if vertex in self.graph:return len(self.graph[vertex])return 0def in_degree(self, vertex):count = 0for v in self.graph:if vertex in self.graph[v]:count += 1return countdef __str__(self):return str(self.graph)class Solution(object):def findJudge(self, n, trust):""":type n: int:type trust: List[List[int]]:rtype: int"""g = GraphAdjList()for i in range(n):g.add_vertex(i + 1)for numList in trust:g.add_edge(numList[0], numList[1])for i in range(n):if g.in_degree(i+1) == n-1 and g.out_degree(i+1) == 0:return i+1return -1

在这里插入图片描述
但是看了题解,好像并没有用到邻接表这种数据结构,但是思想是一样的思想的,也是图论那一套,但是用的Counter()函数,Counter 是 Python 的 collections 模块中的一个类,用于计数哈希对象。它是一个字典的子类,旨在提供一种便捷的方式来计数可哈希对象的数量。简直不要太妙!涨知识了!

class Solution:def findJudge(self, n: int, trust: List[List[int]]) -> int:inDegrees = Counter(y for _, y in trust)outDegrees = Counter(x for x, _ in trust)return next((i for i in range(1, n + 1) if inDegrees[i] == n - 1 and outDegrees[i] == 0), -1)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python字典应用
  • 在Modelarts上微调量化Llama3,并用docker部署
  • 网络网络层之(6)ICMPv6协议
  • DockerCompose中部署Jenkins(Docker Desktop在windows上数据卷映射)
  • C++——辗转相处法
  • 「前端+鸿蒙」鸿蒙应用开发-TS函数
  • 【C++关键字】指针空值nullptr(C++11)
  • python使用gdb进行堆栈查看与调试
  • 【数据挖掘】学习笔记
  • .Net实现SCrypt Hash加密
  • Kafka面试题及答案
  • 【MySQL数据库】:MySQL索引特性
  • 纯理论容器实现的原理
  • 天才程序员周弈帆 | Stable Diffusion 解读(二):论文精读
  • React Hooks 封装可粘贴图片的输入框组件(wangeditor)
  • 《剑指offer》分解让复杂问题更简单
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • DataBase in Android
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Less 日常用法
  • Lucene解析 - 基本概念
  • magento 货币换算
  • Webpack 4 学习01(基础配置)
  • 产品三维模型在线预览
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • ------- 计算机网络基础
  • 面试总结JavaScript篇
  • 让你的分享飞起来——极光推出社会化分享组件
  • 设计模式 开闭原则
  • 一天一个设计模式之JS实现——适配器模式
  • 用jQuery怎么做到前后端分离
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #13 yum、编译安装与sed命令的使用
  • (1)Hilt的基本概念和使用
  • (175)FPGA门控时钟技术
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (编译到47%失败)to be deleted
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm码农论坛 毕业设计 231126
  • (计算机网络)物理层
  • (九)c52学习之旅-定时器
  • (九)One-Wire总线-DS18B20
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • *1 计算机基础和操作系统基础及几大协议
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .bat批处理出现中文乱码的情况
  • .NET C# 使用GDAL读取FileGDB要素类
  • .net core 6 redis操作类
  • .NET 事件模型教程(二)
  • .net通用权限框架B/S (三)--MODEL层(2)