跳出思维定势


前几天和几位同事一起探讨一道面试题:如何找出一个环形链表中“环”的起点。这里只考虑简单的”p”字型环形链表。

对于环形链表的问题,一般很快都能想到使用两个快慢指针来判断是否有环。但是对于如何找到”环“的起点,就需要另辟蹊径。在讨论的过程中,我发现,越是工作年限长的程序员,就越倾向于寻找”数值“解法,即类似设计快慢指针这种方式,通过程序运行寻找答案;而工作年限短,或者刚脱离学校没多久的同事,则更容易换到”解析解“的方式,用几个简单的等式变换,就能用一种优雅的方式,找到环的起点。

俗话说,在一个拿着锤子的人看来,所有的东西都是钉子。“思维定势”,往往让我们事倍功半,甚至错失机会。上面的例子中,有经验的程序员,往往离工程太近,而离数学太远。但是,我们工作、生活中遇到的问题,往往需要多种思维模式、多类学科知识共同来完成,才能取得最好的效果。

工作之后,由于个人时间被压缩,对于学习,心态往往变得非常功利:这个东西对工作有用,我就学一下;没用,那就先放着,省的浪费时间。殊不知,在这种情况下,一个人的思维定势会越来越严重,路也会越走越窄。

开工了,祝各位读者在新的一年里,多学点看上去没用的知识和技能~

P.S. 古希腊有一个经典的“四柱问题”,也是需要跳出思维定势才能解决:对于正方形的四个顶点,如何“一笔”用三根直线将四个顶点串起来,并且最后笔要回到起始点。大家不妨在不求助搜索引擎的情况下,试一试哈。


推荐阅读:

读写锁的性能一定更好吗
狗年快乐
面向数据编程

转载请注明出处: http://blog.guoyb.com/2018/02/22/thinking-set/

欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考:
后端技术小黑屋

Comments