关注
第3题个人想法,(Java):用图表示各个任务之间的关系,图最终会是directed graph(如: a -> b 代表完成a才能完成b,这里b是a的邻居而a不是b的邻居(也不可能是,否则将死循环))(这里我会不停的使用node和任务这两个名词,它们代表一样的东西)
1)创造一个数组叫作neighbours, neighbours[i] 是一个LinkedList<Integer> 代表i的所有neighbour nodes.
2)创造一个数组叫做result, 用于记录最终任务顺序。在这里,添加任务时从数组的最后端开始添加,也就是说先添加最后完成的任务(原因在第4步)
3)创建一个数组visited, visited[i] = true 代表任务i/node i已经被加入result中
4) for i = 0,1,2,...,n, 对于node i 我们执行dfs(i) (如果visited[i] = true, 直接skip). 但这里需要对dfs稍做改变。改变为: 对于所有node i,只有当对其所有邻居都执行完dfs并回溯到自己本身(node i)时,才能把任务i添加到result中(记得是由后往前添加)并且set visited[i] = true。因为这样的话,对于所有node来说,当我们回溯到某个node时说明此node能解锁的任务都已添加到result了,这时我们可以在不影响正确性的情况下将此node添加到result中。
5)return result;
设n = 任务数量
设v = input 数组的数量 (也就是在以上算法中的number of directed edges)
时间复杂度:O(v + n) = O(v) (因为v >= n)
查看原帖
1 2
相关推荐
战争学院:你妈妈第一反应是骗子,我妈妈第一反应是培训贷,全国家长系统是统一的吗哈哈哈 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 27届暑期前端高频面试题汇总(字节百度阿里快手等多家大厂)6058
- 2... 字节三面3188
- 3... 26前端的深夜1441
- 4... 你说你用Claude,你用的是 CLI,还是 Agent、Opus?1211
- 5... 字节实习一个月祛魅了1058
- 6... 继续实习VS暑假沉淀,怎么选....1053
- 7... 今天陌陌的笔试怎么样1026
- 8... 收到了字节的AIoffer911
- 9... xdm,开发投麻了,顺手试试投了测试,但是又有点犹豫1. 如果干了测试,以后找正式的开发是不是会更难?(没到万不得已,我还是想走开发)2. 合同签一年,这个会不会太久了?值得一去吗?给点建议#实习,不懂就问#623
- 10... 组内的实习生走了,被发了好人卡592
正在热议
更多
# 要毕业了,再不说就来不及了 #
26022次浏览 338人参与
# 求职遇到的搞笑事件 #
203911次浏览 1050人参与
# 第3届现代汽车Code Faster急速编程挑战赛 #
566次浏览 42人参与
# 0offer是寒冬太冷还是我太菜 #
1818421次浏览 10763人参与
# 体制内上岸心路历程 #
40547次浏览 236人参与
# 你都用AI做什么 #
56538次浏览 533人参与
# xxx岗位的一天 #
58024次浏览 290人参与
# 我的第一份实习怎么找的 #
294153次浏览 2122人参与
# 你都收到了哪些公司的感谢信? #
5518199次浏览 36247人参与
# 哪些公司面试还在问八股? #
43547次浏览 223人参与
# 你是怎么和mt相处的? #
112162次浏览 587人参与
# 为了去实习,我赌上了___ #
77745次浏览 395人参与
# 找工作时遇到的神仙HR #
1254770次浏览 5961人参与
# 机械笔面试考察这些知识点 #
22020次浏览 164人参与
# 万物皆可发面经 #
8335次浏览 96人参与
# 担心入职之后被发现很菜怎么办 #
309304次浏览 1237人参与
# 歌尔求职进展汇总 #
85709次浏览 368人参与
# 机械人,你的第一份感谢信是谁给的 #
48981次浏览 355人参与
# 扒一扒那些奇葩实习经历 #
161767次浏览 1185人参与
# 职场吐槽大会 #
368604次浏览 2318人参与
# 实习打杂,要跑路吗 #
75594次浏览 373人参与