个人之前用C++和Java共写过200题,之后转成Python。
一般面试中写算法题的考察目标是:算法+数据结构
解题过程中的交流沟通
代码实现质量
Python由于表达高效,比如Java50行实现的题Python可能只要30行,Java要敲十几下键盘的事Python只要敲几下。因此可以更清楚的展示思路,也方便在时间非常有限的面试过程中更快写出题目。
当然,对于学习数据结构来说Python不合适,如果你之前没有上过一门数据结构的课,那么推荐一下CS61B,使用Java。中文C++版本推荐学堂邓俊辉在线数据结构
Python只是一个适合用来过面试写算法题的工具(当然FP语言更适合写算法,但Python更普遍),如果有数据结构的基础的话可以很快上手。
上手材料推荐读这门课前是节课的notes,看前三节,学一点微小的Pythonic porgrammingCIS 192: Python Programmingcis192.github.io题外话,CIS 19x是UPenn的一系列迷你课程,一般是一些在某些领域有经验的研究生或本科生来上的,内容是新语言入门,或者Web开发一类。它最大的好处是,教课的是学生,比起教授或者经验丰富的工程师更讲人话,所以课件非常好理解。往年有Rust,Haskell,C++的课,我在上手新语言的时候都会来读读这系列课的notes,非常有帮助。
还可以参考: (这个好大哥自己的频道也很有意思))Talk: Conor Hoekstra - Beautiful Python Refactoringwww.youtube.com
比如LeetCode提交中有很多非调库的一行解法都是Pythonic programming,意味着充分利用Python语言特性,把其他语言中很难写/要写很长的功能用很短很简洁的方式写出来。
然后就可以按分类开工啦,推荐分类
我的分类Python题解持续更新中麦当劳No1:LeetCode二分查找专题1 易于理解的边界详解(Python)zhuanlan.zhihu.com麦当劳No1:LeetCode Partition专题(Python)zhuanlan.zhihu.com