12
返回列表 发新帖
楼主: wrj5518
跳转到指定楼层
上一主题 下一主题
收起左侧

[CareerCup] 【第三轮】7.7-7.13 CareerCup 4.2

🔗
ivycheung1208 2014-7-12 05:17:40 | 只看该作者
全局:
【解题思路】
用DFS递归遍历直到访问到目标节点或无连通路径……
研究了半天肿么表示graph真是弱爆了=。=最后终于在GeeksforGeeks上找到些不错的栗子 喵
【时间复杂度】
V(O+E)
【空间复杂度】
V(O+E)
【gist link】
https://gist.github.com/fe02d53a80a5684422da
回复

使用道具 举报

🔗
兰橘清檬 2014-7-13 06:36:28 | 只看该作者
全局:
【解题思路】
BFS , DFS
【时间复杂度】
O(n)
【空间复杂度】
O(n)
【gist link】
https://gist.github.com/JoyceeLee/fa095f6e3b3f82d4c83e

ps : 比较 DFS & BFS
回复

使用道具 举报

🔗
wilbert 2014-7-14 05:25:51 | 只看该作者
全局:

【解题思路】
BFS
【时间复杂度】
O(V+E)
【空间复杂度】
O(V)
【gist link】
https://gist.github.com/iwilbert/fef11bcadca3b1acfa9e
回复

使用道具 举报

🔗
jyh橘子 2014-7-15 13:09:50 | 只看该作者
全局:
【解题思路】 BFS
【时间复杂度】 O(V+E)
【空间复杂度】 O(V)
【gist link】 https://gist.github.com/jyhjuzi/11fb399098dafe34a3b4
回复

使用道具 举报

🔗
renli3000 2014-7-18 03:23:29 | 只看该作者
全局:
本帖最后由 renli3000 于 2014-7-18 03:48 编辑

【解题思路】 DFS和BFS都写了一遍, 用hashtable做访问记录
【时间复杂度】 O(N)
【空间复杂度】 O(N)
【gist link】
https://gist.github.com/Noahsark/5b95a325a0b86e58ba0d
回复

使用道具 举报

🔗
renli3000 2014-7-18 03:29:25 | 只看该作者
全局:
jyh橘子 发表于 2014-7-15 13:09
【解题思路】 BFS
【时间复杂度】 O(V+E)
【空间复杂度】 O(V)

首先 object永远不要用 “==” 比较,最安全的做法是用Object.equal()
其次 不要写类似于“(current.nexts != null && current.nexts.size() != 0)”的表达,即时你知道current.next已经initialize了,NPE的隐患总会有的
回复

使用道具 举报

🔗
jyh橘子 2014-7-18 04:24:18 | 只看该作者
全局:
renli3000 发表于 2014-7-18 03:29
首先 object永远不要用 “==” 比较,最安全的做法是用Object.equal()
其次 不要写类似于“(current.nex ...

灰常感谢!  
第一条有道理,我以后多注意。但是第二条我不太懂,如果&&应该是前一个成立了才会判断后一个的吧,应该不会有NPE了吧?  希望你给解释一下,谢谢哈~
回复

使用道具 举报

🔗
renli3000 2014-7-18 04:46:24 | 只看该作者
全局:
jyh橘子 发表于 2014-7-18 04:24
灰常感谢!  
第一条有道理,我以后多注意。但是第二条我不太懂,如果&&应该是前一个成立了才会判断后一 ...

举个例子 计算if(a && b) 时
java会先算 c = a & b 然后是 if(c)
所以b的NPE 是在计算c的时候抛出的
回复

使用道具 举报

🔗
jyh橘子 2014-7-18 05:17:25 | 只看该作者
全局:
renli3000 发表于 2014-7-18 04:46
举个例子 计算if(a && b) 时
java会先算 c = a & b 然后是 if(c)
所以b的NPE 是在计算c的时候抛出的

Got it !    非常感谢哈,我基础不好,各种不扎实!
回复

使用道具 举报

🔗
tonygxxx1212 2014-7-19 22:12:34 | 只看该作者
全局:
【解题思路】1. 表示directed graph 参考了geeksforgeeks,每个顶点有他对应的adjacent list,addedge()用来添加directed edge
                  2. 找路径,最后就变成了在adjacent lists 里找,为了防止可能存在的circle,访问过的顶点需要标记
                  3. 具体查找采用bfs,用一个queue来添加当前正在查看的顶点,dequeue一个顶点要保证已经enqueue它的所有adjacent vertices
                     只要queue没空就循环找下去,直到发现返回true,不然就false

【时间复杂度】O(V+E)
【空间复杂度】O(V)
【gist link】: https://gist.github.com/xun-gong/7242a6c9205de1a3f43d
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表