前言
数据结构和算法可以让程序员脱胎换骨,刷算法题可以帮助我们通过面试和笔试,找到梦寐以求的工作,进入一线大厂或者拿高薪。怎么刷题呢?LeetCode上有2000多道题目,难道要全部刷完?
国内的一线大厂在面试和笔试的时候会考察什么样的题目?于是提莫抽取8个公司Top20的高频题目做了一个合并统计:
大厂LeetCode高频面试题
内容略长,选择直接查看面试题?还是不要了,耐心看完扒~
发现存在着很大的重复性,有些题目甚至所有的公司都有考察,比如LeetCode-206.反转链表。同时这些题目所属的类别包括了基础的数组、链表、排序,高阶的位运算、动态规划也有考察。从题目的难度来说,中等难度占了一半以上,困难的只有十分之一不到。
这就提示我们,刷题要刷,但不是盲目的刷,要有针对性,重点的去刷,所以除了上面的大厂Top20的高频题,还从LeetCode《LeetCode 热题 HOT 100》中精选了题目,一起对这些题目进行讲解。
但是请注意,在讲解这些题目时,默认大家已经具备了Java的基础知识,所以数组、ArrayList、链表LinkedList、HashMap等常见常用的数据结构不再解释它们的具体含义、区别和用法,如果需要会在解题过程中直接使用。
但是对于位运算、动态规划、并查集等不是特别常见的数据结构和算法,则会解释具体的概念和含义后,再进入题目的讲解。
但是在正式进入学习之前,我们首先要知道为什么我们要学习数据结构和算法,怎么正确的学习数据结构和算法,怎么正确的刷题。
为什么要学习数据结构和算法?
首先,程序员这个群体也是有金字塔结构的。如果连基本的算法和数据结构都不会,基本上就比较底层,底层就意味着低薪酬。付出同样时长的脑力劳动,赚得就会比别人少。
其次,作为团队里的一员,很多时候不光要做好自己的本职工作,也要和其他团队进行技术问题上的沟通