47913a878670582f40eb42d47124cb6c
暴力遍历,可以不爱,但别轻视甚至嘲笑它的存在

招数据结构与算法学习指南 是一个尝试着让你在竞争激烈的校招过程中,快速且轻松的学习数据结构与算法,提高校招竞争力的课程!

这篇文章并不是宣扬以暴力遍历为代表的小白解题法 的优越性,而是想要告诉那些在数据结构与算法学习过程中,一方面耻于暴力遍历,另一方面因为能力不足不能使用优雅的方式 OC 题目,从而陷入纠结的同学们,告诉他们一个简单却又看上去不太正确的道理:暴力循环并不可耻,任何解决问题的方式都应该值得肯定。

暴力遍历,是每一个人掌握算法的起点

很多时候,作为没接触过或者是刚刚学习数据结构的同学来说,暴力遍历是一种看上去很简单,很无脑,但也是最为有效的解决方案。

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。

如果你参加过校招,亦或者是正在准备技术校招,肯定能够看到这道经典的字符串算法题目。我相信有至少有70%的同学第一个会想到的就是暴力遍历:两个 for循环就能够得到结果。

使用类似于暴力遍历、遍历递归等一些所谓的小白解题法,最根本的原因在于我们在学习一门编程语言的时候,要对某一种数据结构重复的训练,特别是暴力遍历。作者在学习 Java时,按照大学教材的安排,当我学习数组这部分的时候,要不断练习 forwhile 这些常见的逻辑,可以说,在没有正式掌握数据结构的特点前,大部分的算法题目都可以通过遍历法来得到答案

这就引起了一个问题:当我们熟悉了遍历这种方便的算法,并且没人强制要求时间复杂度、空间复杂度时,便往往不愿意做出改变。 这个问题并不是一个人的问题,而是目前大部分学生的问题。

我们掌握的第一个算法,就是暴力遍历。在接下里的日子里,我们不断的使用它,它代表着我们敲开了算法的大门。

暴力遍历,真的就这么不堪吗?

永远不要看不起你掌握的第一个算法!

top Created with Sketch.