60分钟搞定Tarjan算法求解无向图的割点与桥

本人在学习 Tarjan 算法求解无向图的割点与桥的问题时,很快发现了一篇简洁易懂的文章。很顺利地了解算法的思路,并写出了“高效”的代码,此时内心飘过 —— So Easy。然而,当我翻开《算法竞赛进阶指南》这本书的有关篇章时,我发现其中经过精简优化的代码有几条语句让我不得其所。以至于,花了较多心思和时间来思考🤔这段真正高效的 Tarjan 算法的工作原理以及代码的编写。关于 Tarjan 算法,我将会写若干篇系列文章,来完整系统地介绍 Tarjan 算法的原理以及其主要解决的问题。而在本章我主要讲一个问题 —— 如何使用 Tarjan 算法求解无向图的割点与桥。在讲述问题之前,我们先来简单地了解下什么是 Tarjan 算法?Tarjan 算法Tarjan 算法是基于深度优先搜索的算法,用于求解图的连通性问题。Tarjan 算法可以在线性时间内求出无向图的割点与桥,进一步地可以求解无向图的... Read More

为什么C语言不会过时?

这是C语言系列博客的第3篇,如果对前2篇感兴趣,可以点击下面的链接:什么教材适合零基础的C语言学习者?为什么C语言很难评价任何一门编程语言,都是招人骂的。 永远是这样。就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:“傻逼!”这个在心理学上有个专业的名字:叫做“二逼”现象那我为啥还要做这个挨骂的事呢?作为《C语言点滴》《drop of knowledge of C++》书籍的作者,《C语言新思维,第二版》的译者。我觉得我有责任系统的介绍一下这本语言,他的特点,还有他的未来。这个问题对很多刚刚踏入程序猿这个行业的新手至关重要。因为他们有深深的担忧,万一C语言就像Fortran,perl语言那样过时了怎么办?为什么C语言不会过时?先上一个表,这个就是著名的TIOBE语言排行榜。目前它是一个最权威的一个语言流行度的排行榜,从这个排行榜上看,你会得到一个... Read More

递归

递归递归是什么?递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法 。维基百科简单说,就是自身调用自身。为什么使用递归?往往面对一类问题时,如果它的规模足够小或者说达到既定的边界条件时,我们可以直接获取答案。但是,当这类问题的规模比较大时,却往往无法直接获取答案。那么,这个时候就可以通过“自身调用自身”的方式,来不断地减小问题的规模,直到问题的规模被缩减到足够小时,直接将答案返回上层的调用者,最终获取到原问题的解。如果将求解的过程逆过来,那么就是所谓的递推。通过这种方式,我们可以写出“优雅”的代码去解决规模比较大的问题。进而,避免了通过递推的方式,在每一次递推时产生的复杂的条件判断的问题。上文中提到经过递归调用,会不断地减小问题的规模,有些作者认为这是一种减治法。递归的特性自身调用自身在上文中,已经提到了这个特性,而且也非常好理解,不再赘述。... Read More

罗永浩“老人与海”黑科技发布会直播全程

从锤子手机到电子烟,老罗经历了人生的大起大落,这次罗永浩在“老人与海”黑科技发布会上推出Sharklet 鲨纹抗菌技术,宣布将售卖以Sharklet抗菌材料制作的地平线8号抗菌儿童背包、地平线8号铝镁商务旅行箱、情趣用品。同时,罗永浩也首次公布自己成为Sharklet Technologies公司的全球合伙人。YouTub Read More

清华生保持高效率奋斗的五大因素

要有一个能早上叫醒你的梦想1.1 足够大1.2 可衡量1.3 不要怀疑自己的能力目标,偶象激励2.1 目标细化2.2目标衡量对比 写下自己到哪了,还有多远不要进入自己不感兴趣的能力,一定要做自己感兴趣的事3.1 没有能力问题有的是感不感兴趣4.暂停并思考 (第一遍想不起来是很正常的,李锦堂都想不起来,所以心平气和的多看几遍,不要怀疑自己,参考1.34.1 怎样用过去的知识的解释4.2 复杂理论简单化4.3 笔记故事化,想像你在教别人自备洗脑本(视频YouTubReferenchttps://www.youtube.com/watch?v=97BIkE1apf Read More

Show HN: Coscreen.co – a radically different remote collaboration tool

OP here, we believe that the time has come to let remote workers and highly agile teams get stuff done together in a very different and much more natural way. CoScreen is a remote collaboration tool that enables exactly that.Problem: Pretty much anyone who has ever worked remotely knows it - today’s remote collaboration solutions provide much better screensharing quality and reliability (thanks, Z... Read More

《设计模式之美》前Google工程师 王争

你好,我是王争,是“数据结构与算法之美”专栏的作者。“数据结构与算法之美”专栏在今年 2 月底全部更新完毕。时隔 8 个月,我又给你带来了一个新的专栏“设计模式之美”。如果说“数据结构与算法之美”是教你写出高效的代码,那这个设计模式专栏就是教你写出高质量的代码。《设计模式之美》前Google工程师 王争查阅课程:https://time.geekbang.org/column/intro/25 Read More

到底该如何刷LeetCode?

引言本人非计算机专业出身,本科期间一直觉得数据结构与算法是一项非常基础也重要的知识,但是由于自己可有可无的欲望和糟糕的自律能力,并没有深入地学习这项知识技能。但是,随着时间的流逝,无论在工作中、网络中还是朋友圈中,发现数据结构与算法是无比的重要,以至于任何一位牛人都无不逆天地掌握这项最基本的本领。所以,在2018年8月份,我下定决心通过刷LeetCode来锻炼这一本领——数据结构与算法。从那时起,几乎是从0起步,很多知识都不了解,基本上每刷几道题都会卡到一个完全没有遇到过的知识点,尽管到现在也会时不时地发生。但是,我一直都在坚持,并且从未放弃,累计现在已经刷了421道题目(其实不止)。你也许会问这是为什么,当然,我会在文中的后面讲到。不过,在此之前,我不得不提我是怎么计划并走过这次还未完成的刷题之旅的——到底该如何刷LeetCode?步骤频率优先 —— 因人而异的刷题顺序最开始的前两个月,... Read More

我与我的职业梦想 – 如何成为一名优秀的软件工程师

如果方便,建议边听《只要为你活一天——刘家昌》边阅读无知少年对于计算机的热爱,甚至可以追溯到初中时为了弄明白步步高9188英语词典学习机中的RPG游戏,懵懵懂懂地看着VB的语法书;高中时,在全部人都沉浸在游戏的网吧中,看着是似懂不懂的C语言程序设计教学视频;高考报自愿时,在百度中输入“计算机专业怎么样?”后一脸憧憬的神情。最后,总于“成功”地依从父母的安排学习了自动化专业。甚至在大一十一假期回来后,亲友问道自动化是干什么时,我都无法准确的解释。我想我就是这样,从小没有目标,没有梦想的那种小朋友,以至于混到了大学,自己的专业都是被人规划好的,却毫无感觉。大学期间,由于一部室友推荐的讲述Facebook创业史的电影——《社交网络》让我迷上了互联网技术。从大一下学期开始自学Web技术,大二上学期注册了属于自己的域名并建立了博客。就在这样的环境中,磕磕绊绊地学着计算机相关的杂七杂八的知识。在一个... Read More

如何在亚马逊求职面试中回答行为面试问题

大多数美国公司的面试官都依靠行为面试问题来找到合适的人选。这包括亚马逊-行为问题是亚马逊求职面试的重要组成部分。什么是行为面试问题?你知道什么是行为面试问题吗?这些问题的开头是“给我一个…的例子”或“告诉我一段时间…”。在亚马逊面试中回答行为面试问题的提示行为问题并不容易,因为您需要记住过去的一个例子。以下是一些可以帮助您的准则在职位描述中查找有关可能的行为问题主题的线索每次面试都会有所不同,所以我无法确切地告诉您将要问什么问题,但是职位描述将使您对各种可能性有个很好的了解。如果您正在亚马逊申请管理职位,这些问题将问诸如“告诉我您必须向某人提供有关其表现的反馈的时间”或“给我一个激励团队的例子”之类的问题。因为激励团队和提供绩效反馈是经理需要做的两件事。其他选项可能是“告诉我您最成功的聘用”或“您何时帮助一名员工晋升。”如果您正在亚马逊申请产品经理职位,这些问题将询问您诸如“给我一个必须... Read More

Amazon Interview Questions Summary

亚马逊面试问题汇总Amazon Interview Online Assessment Questions(亚马逊在线面试题AMCAT(www.myamcat.comTop N Competitors/Buzzwords⭐⭐ [Experienced]Zombie in Matrix⭐⭐ [Experienced]Critical Routers⭐⭐ [New Grad]Product Suggestions⭐⭐ [New Grad | Experienced]Number of Clusters⭐⭐ [Experienced] Reorder Data in Log Files⭐⭐⭐ [Experienced]Optimal Utilization⭐⭐⭐ [Experienced]Min Cost to Connect Ropes / Min Time to Merge Files⭐... Read More