刷 leetcode 使用 Python 还是 c++?

2021-02-04 15:30:37 +08:00
 hakunamatata11

我身边 80%的程序员朋友在刷题的时候会选择 Java,很少有人用 C++来刷题。

这两门语言各有特点:

C++:从 C 语言发展过来的一门语言,继承了灵活(可以潜入任何现代的处理器中,),高效,简洁等语言特征。不过想学好 C++花 3 年时间都算少的,不过想要成为顶级程序员,还是可以学一下 C++。

Java:Java 和 C++一样是一门编译形语言。不过不同的是,Java 是“求职万金油”。二十多年来,一直都是主流的开发语言,且拥有世界上数量最多的程序员。对于新手来说,Java 的优势在于它的语言本身不太难,对小白很友好。Java 的运行效率高,经常用于软件开发工程,商业开发等。

不过想要让语言在刷题中有优势,我建议一定要打好数据结构和算法的基础。有些人虽然已经是工作了几年的程序员“老手”,但是做算法题能力甚至不如一个应届毕业生。就是因为从一开始就没有把基础打好,甚至在工作多年以后越来越差,下面分享一些我在提高算法能力前期准备阶段用的一些资料:

1 、Java 编程规范适合入门的初学者,把 java 的基础语言都有讲到。这本书主要是为了从基础培养 Java 的语言规范,然而编程语言的规范可以很大提高日后的工作效率,也能在面试中给面试官带来一个好印象。

2 、九章算法基础班 Java+Python课程里有针对数据结构和基础算法详细地讲解,课上还有手把手 coding 的过程,特别适合基础不好或者刚入门的同学。

戳我报名免费试听前三章

3 、[《Java 编程思想》]( https://pan.baidu.com/disk/pdfview?path=/我的资源 /电子书 /电子书 /java 编程思想 /Java 编程思想(第 4 版).pdf):初级中级都可以,最经典的 Java 著作,有比较通俗易懂的实例,深刻领悟 java 的精髓。但是需要花时间细细研读。

讲到选语言大家都是为了效率高,其实除了选对一门适合自己的语言以外,还可以通过一套合适的刷题步骤来提高刷题的效率,以下用我自己最常用的一个刷题软件LintCode来举例,大家可以举一反三。

一、明确自己的面试目的

首先你要明确自己刷题的目的,比如当时我自己是为了面试所以开启了我拼命刷题的道路。第一步我做的就是先把一些面试高频考点整理出来,以下是我当时以下是在上九章算法 2021》时老师总结的面试高频考点,颜色越深面试考频越高。

如果漫无目的地刷题,花费好几天解开一道根本不会考的困难题型,这样的刷题方式不仅累,而且在面试的时候还是毫无优势。所以我建议在刷题的时候先挑高频知识点刷,先把知识点熟悉一遍,再去精刷 2~3 遍,这样刷题的效果会更好。

二、利用 tag 进行刷题

然后就是根据自己整理的高频考点开始刷题,比如我会在LintCode上找到对应的二叉树知识点,然后进入纠结症患者最喜欢的步骤——帮我选一题,系统推荐什么我就做什么。如果做完觉得难度太高,就自行降低难度开始练习,从简单题开始。

每次做完都要总结,因为一个知识点可以变化出很多不同的考试题型。所以刷多少题都不如,整理出对应知识点的解题思路,这样才能让你在看到任一变型题的时候能立马想到采用哪种方式解题,这才是高效刷题的最终目的。

除了按照知识点的 tag 进行刷题,如果你和我一样有明确的目标公司,你还可以在LintCode里找刷该公司的常考题、必考题,里面含概了国内国外互联网公司的最新的面试真题,刷完一套,我就会自己去总结一下这个公司的面试套路。

三、“少”刷题

本人不提倡多刷题,但我提倡一题多刷,花时间把一道自己不会做的题,一道有价值的题精刷。做到刷题 100,能力超过刷题 300+,除了上述的一些刷题步骤,这里分享一下我在LintCode上的刷题路线,希望能给大家一点刷题思路。

从毕业求职开始就用LintCode刷题,到现在也有三年了,期间也试过很多其他不同的刷题软件,还是觉得LintCode最适合求职面试时候用,特别是想要短期突击的同学我建议你们直接刷LintCode里大厂的算法真题,亲测,对突击算法面试很有帮助!

最后,我根据知识点整理了一些高频题:

二叉树:

二叉树的后序遍历

二叉树的所有路径

根据前序和后序遍历构造二叉树

对称树

找出树中每行的最大值

寻找重复的子树

哈希表:

两数之和

最长回文串

两数组的交集

数据流中第一个唯一的数字

两数和 II-输入已排序的数组

二分法:

经典二分查找问题

搜索旋转排序数组

寻找峰值

最长上升子序列

985 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/751278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX