问题描述

n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。

路线用 connections 表示,其中 connections[i] = [a, b] 表示从城市 a 到 b 的一条有向路线。

今年,城市 0 将会举办一场大型比赛,很多游客都想前往城市 0 。

请你帮助重新规划路线方向,使每个城市都可以访问城市 0 。返回需要变更方向的最小路线数。

题目数据 保证 每个城市在重新规划路线方向后都能到达城市 0 。

例子

image.png

思路:类似广度优先搜索的思想,从初始节点开始,然后遍历与其相邻的节点,然后再遍历这些节点的相邻节点。而这题遍历的时候去考虑边的情况,如果该边指向的是他前一个节点,则符合,反之,则不符合,需要变更方向。

python实现:

1,队列(超出时间限制)

class Solution:

def minReorder(self, n: int, connections: List[List[int]]) -> int:

c=connections

que=[0]#存储需要遍历的节点

res=0

while que: #判断节点是否全部遍历完

x=que.pop() #出队列

k=0

while k

if c[k][1]==x: #边指向之前节点

que.append(c[k][0]) #加入下一节点

c.pop(k) #将遍历的边删除

continue #继续下一次遍历

elif c[k][0]==x:

res+=1 #变更次数加一

que.append(c[k][1])

c.pop(k)

continue

k+=1

return res

改进第一种方法

class Solution:

def minReorder(self, n: int, connections: List[List[int]]) -> int:

c=connections

ans = 0

now = {0} #存储需要遍历的节点的集合

while len(now) != n: #判断集合长度是否达到n

new = set() #新建集合

i = 0

while i < len(c): #遍历存储边的列表

if c[i][1] in now:

new.add(c[i][0])#将下次要遍历的节点保存起来

c.pop(i) #删除边

continue

elif c[i][0] in now:

ans += 1

new.add(c[i][1])

c.pop(i)

continue

i += 1

now |= new #将集合new加进集合now中

return ans

继续改进

class Solution:

def minReorder(self, n: int, connections: List[List[int]]) -> int:

res = 0

ordered_set = {0} # 保存已经能正确到达0的城市

for (l, r) in connections:

if r in ordered_set: # r是已经能到0的城市,那么l->r后就可到0

ordered_set.add(l)

elif l in ordered_set: # r目前不可到城市0,l可到,那就让r->l后到0,重修+1

res += 1

ordered_set.add(r)

return res

python语音规划路线_重新规划路线(python)相关推荐

  1. python程序员培训_推荐给未来Python程序员的自学路线,不再背负小白名称

    Python彻底火了之后,各种培训机构各和学校也不断加大对Python的培训力度,很多程序员学习Python都会选择去学校或公司培训.培训机构学习,但是不是每个喜欢Python编程的程序员都是可以交得 ...

  2. python语音输入功能_“在Python中如何实现一点按钮就出现语音输入语音,输入语音后可以自动翻译为文字的程序?“python语音识别教程...

    Python用什么模块开发语音识别系统 使用YQ5969,这个语音识别模以支持1--8个咪头,还可以支持本地和识别不同需求.5米内本地识别 93%以上,云端识别率97%.这个语音识别模块可以滤除噪声. ...

  3. 高考python必考题目_假如高考考python编程,这些题目你会几个呢?

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

  4. python怎么打日志_怎样调试 日志 python 代码

    展开全部 使用 pdb 进行调试 pdb 是 python 自带e5a48de588b662616964757a686964616f31333361306366的一个包,为 python 程序提供了一 ...

  5. c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用

    作者 | 樱雨楼 引言 指针(Pointer)是 C.C++ 以及 Java.Go 等语言的一个非常核心且重要的概念,而引用(Reference)是在指针的基础上构建出的一个同样重要的概念. 指针对于 ...

  6. python常用库教程_这几个python常用的库你必须知道!

    随着人工智能时代的到来,python变得更加流行.受欢迎,功能强大.简单易学.容易入门.应用广泛等,掀起了学习热潮,现在越来越多人转行都会学习python语言.为了让大家快速掌握python,今天为大 ...

  7. python入门第一课_入门第一课 Python入门涉及的问题及简单示例

    很多初学者都在问:我想自学Python,该怎样入门?入门选择哪些书籍? 下面,我以自己的理解作出解答. 1.先说明大体的学习进度. Python确实入门较为容易,语法清晰易懂.一旦入了门再想提高就和其 ...

  8. python国内书籍推荐_这些都是Python官方推荐的最好的书籍

    转行学Python有前途吗?这个答案是肯定的,AI课程都已经进入小学教材了,未来Python趋势无疑是光明的,但是如何学习Python,很多Python小白都来问小编有什么适合的Python入门书籍推 ...

  9. python编码转换语句_好程序员Python教程之字符串编码知识小结

    好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...

  10. python画日漫_不能错过的Python漫画

    原标题:不能错过的Python漫画 漫画内容取自: http://kaltap.com/2015/11/28/9-python-cartoons/ 翻译: 诗书塞外 Python部落()组织翻译, 禁 ...

最新文章

  1. 2021年大数据Flink(三十八):​​​​​​​Table与SQL ​​​​​​案例五 FlinkSQL整合Hive
  2. 在C#代码中获取Silverlight的初始化initparams参数
  3. logback的简单使用
  4. javascript之DOM总结
  5. [Postgres]Postgres复制表
  6. 开发缺点_开发移动端手机APP有哪些优缺点?
  7. 存储维护和服务器的区别,存储服务器和普通服务器区别是什么? 你想知道吗服务器类型一般是什么...
  8. iostat linux,iostat 命令详解
  9. Web SCADA 电力接线图工控组态编辑器 1
  10. 23种设计模式(六)单一职责之桥模式
  11. 美国新泽西州,也有一个Menlo Park——门洛公园,尽管不太为人熟知,但爱迪生那里的一个发明却点亮了全世界。...
  12. javaMD5加密生成key方法
  13. 有哪些盛极一时的互联网产品,现在都没落了?
  14. QT图形显示和处理6
  15. 为什么“家徒四壁”中的徒是仅仅,只有的意思?
  16. 微信小程序如何关联视频号直播
  17. VC(Visual Studio C++)虚拟键VK值列表
  18. 深富策略军工股掀起涨停潮
  19. 生命早期肠道微生物组和疫苗功效
  20. LeetCode—494. 目标和(Target Sum)——分析及代码(Java)

热门文章

  1. nginx总结二(nginx的启动停止以及版本平滑升级)
  2. My MPC系列·暴风影音 V5.00 RC3
  3. 【转载】字段符号在ABAP OOP中的应用
  4. 为IDOC创建tRFC连接
  5. 21、Power Query-列文本格式处理
  6. 程序员最害怕的5件事,你中招了吗?
  7. 固定资产多提折旧问题
  8. SAP在物流工作中的应用之学习笔记
  9. “隐忍”多年的“水果大王”百果园要寻求资本协助了?
  10. 拼购电商不是团购,但扎的的却是三四五线城市老百姓的心