当前位置:网站首页>leetcode:6135. 图中的最长环【内向基环树 + 最长环板子 + 时间戳】
leetcode:6135. 图中的最长环【内向基环树 + 最长环板子 + 时间戳】
2022-07-31 17:28:00 【白速龙王的回眸】
分析
每个点出度最多是1
所以是一个【弱化】的内向基环图
所有联通分量最多一个环
所有点最多一个环
利用时间戳的方式记录每个点上一次访问的时间
如果有重复访问并且起始时间在st后面,意味着是一个新的环
就记录入案中
同时更新时间戳,和这个点最近的时间戳即可
ac code
class Solution:
def longestCycle(self, edges: List[int]) -> int:
# 至多一个出边 -》弱化内向基环树
# 每个联通分量最多只有一个环
# 每个点最多只有一个环
# 时间戳 + 边遍历边改优化
n = len(edges)
time = [0] * n
clock, ans = 1, -1
# x 是起点
for x, t in enumerate(time):
if t: continue # 之前已经被动遍历过了
st = clock
while x >= 0:
if time[x]: # 二次遍历x
if time[x] >= st: # 找到一个新的环
ans = max(ans, clock - time[x])
break
time[x] = clock
clock += 1
x = edges[x]
return ans
总结
图论 + 最大环 + 内向基环 + 时间戳
边栏推荐
猜你喜欢
Golang——从入门到放弃
基于WPF重复造轮子,写一款数据库文档管理工具(一)
GateWay实现负载均衡
【pytorch】1.7 pytorch与numpy,tensor与array的转换
Automated testing - web automation - first acquaintance with selenium
A common method and the use of selenium
Jiuqi ny3p series voice chip replaces the domestic solution KT148A, which is more cost-effective and has a length of 420 seconds
useragent在线查找
杰理语音芯片ic玩具芯片ic的介绍_AD14NAD15N全系列开发
每日练习------随机产生一个1-100之间的整数,看能几次猜中。要求:猜的次数不能超过7次,每次猜完之后都要提示“大了”或者“小了”。
随机推荐
Bika LIMS 开源LIMS集—— SENAITE的使用(检测流程)
Last write wins (discards concurrent writes)
[Network Communication 3] Advantech Gateway Modbus Service Settings
Bika LIMS 开源LIMS集—— SENAITE的使用(检测流程)
动态规划之线性dp(下)
How to install CV2 smoothly in Anaconda
无主复制系统(1)-节点故障时写DB
Taobao/Tmall get Taobao password real url API
MySQL---基本的select语句
[TypeScript] OOP
10 Ways to Keep Your Interface Data Safe
多主复制下处理写冲突(1)-同步与异步冲突检测及避免冲突
使用互相关进行音频对齐
Flink_CDC搭建及简单使用
抖音根据关键词取视频列表 API
flutter设置statusbar状态栏的背景颜色和 APP(AppBar)内部颜色一致方法。
go记录之——slice
MySQL---创建和管理数据库和数据表
Multi-datacenter operation and detection of concurrent writes
牛客网刷题(四)