算法通关之路
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 基础数据结构和算法

力扣(LeetCode)是世界上最知名的编程技能练习网站,支持用户在线使用C、C++、Java、Python、JavaScript等十几种编程语言解决超过1000道编程题目。除了考查对编程语言的掌握程度,力扣(LeetCode)题目的核心目的是对答题者数据结构和算法水平的考验。掌握基础的数据结构和算法,是刷题的必要条件。

从广义上来说,数据结构是数据的存储结构,算法是操作数据的方法。平时我们探讨时使用的是更为狭义的概念,特指某些具体种类的数据结构和算法,例如数组、链表、栈、队列等数据结构,又如二分法、动态规划、快速排序等经典算法。

数据结构是为算法服务的,算法通常也要建立在某一种或几种数据结构之上才可以发挥作用,两者之间是相辅相成的关系。相信读完本书后,你会对这句话有更为深刻的理解。

下面罗列了常见的数据结构、算法思想和算法技巧。牢固地掌握这些基础的数据结构和算法知识,可以让你刷题时事半功倍,学习更为复杂的算法时也能得心应手。

● 常见的数据结构:数组、栈、队列、链表、二叉树、散列表、图。

● 常见的算法思想:分治、贪心、回溯、动态规划。

● 常见的算法技巧:二分法、排序、双指针、滑动窗口、并查集、深度优先遍历和广度优先遍历等。

相信通过阅读、学习本书,读者将逐渐掌握和巩固这些知识。牢固掌握这些基础的数据结构和算法,刷题才会事半功倍,学习更为复杂的算法也能得心应手。力扣(LeetCode)的题目虽然不断出新,但是最终用到的算法思想永远是那么几个,很多题目都是“新壶装旧酒”,即在原有的题目基础上做适当的扩展(比如两数和、两数和II、三数和、四数和,等等)或者改造,使你不能一下子看出问题的本质。

希望读者对以上内容有一个初步的认知,然后结合本书所讲的知识进行加强与巩固。