darkTianTian
V2EX  ›  Python

约不到面试,只好潜心钻研算法。

By darkTianTian at 2019 年 3 月 16 日 · 7847 次点击

裸辞一个多月,只面了几家创业公司,目前一个 offer 还没拿到。每天只能刷 LeetCode 艰难维持。 分享一个我最近写的《剑指 offer 》 python 的题解,https://github.com/darkTianTian/sword-for-offer/tree/master 希望可以帮(pian)助(ji)各(ge)位(star)和我一样还在挣扎的 pythoner.

第 1 条附言  ·  2019 年 3 月 18 日
我尝试在一楼所说的 58 题上写了常规的写法,但是在 Python 中 str 类型时不可变对象,没法实现 O(1)的空间复杂度。
所以一行的写法在面试 Python 岗位的时候是绝对可行的,如果真要说是算法岗位,那也用不到 Python,毕竟执行速度不如 C 和 Java。
34 条回复  •  2019-03-18 23:57:18 +08:00
xupefei
   1
xupefei  
   2019 年 3 月 16 日   ❤️ 6


LZ 你确定在考算法的时候能这么玩?
azh7138m
   2
azh7138m  
   2019 年 3 月 16 日 via Android
好怀念刷题的时间(
leetcode 以数据结构基础为主吧,算法比较少
lxy42
   3
lxy42  
   2019 年 3 月 16 日 via Android
@xupefei 😂
Qzier
   4
Qzier  
   2019 年 3 月 16 日 via iPad
@xupefei 前面的都是赘余的,其实 s[::-1] 即可。至于原地反转,另说。
Qzier
   5
Qzier  
   2019 年 3 月 16 日
@xupefei 不好意思,看错了。
darkTianTian
   6
darkTianTian  
OP
   2019 年 3 月 16 日
@xupefei 为什么不能,有些题还不限制各种标准库函数呢。
darkTianTian
   7
darkTianTian  
OP
   2019 年 3 月 16 日
@azh7138m 嗯? LeetCode 上不是算法么
pwrliang
   8
pwrliang  
   2019 年 3 月 16 日 via Android   ❤️ 1
跟楼主差不多,我刷题是为了以后不去拧螺丝。挂一个我的博客,https://blog.pwrliang.com
我在刷用 Java 刷 Leetcode,我不是直接贴代码,而是给出了详细的解释,并尽量写出多种解法。
cyn
   9
cyn  
   2019 年 3 月 16 日 via Android
同款头像
azh7138m
   10
azh7138m  
   2019 年 3 月 16 日
个人是觉得普及组的题目比较难 :D
darkTianTian
   11
darkTianTian  
OP
   2019 年 3 月 16 日
@cyn hhh,巧了不是
carlclone
   12
carlclone  
   2019 年 3 月 16 日
这反转字符串.....你觉得可以 , 面试官可不这么觉得 , 这题目考的是数组操作 , 还是去 LeetCode 看 Discuss 吧
GodFather66
   13
GodFather66  
   2019 年 3 月 17 日
加油 同为 pythoner 已 star
lincanbin
   14
lincanbin  
   2019 年 3 月 17 日 via Android   ❤️ 3
1 楼那个题目,考察的核心是尽量少的空间复杂度,因为操作的空间足够少,可以在 L1 cache 里完成,就会非常非常快……

实际上应该先逐字母翻转( LeetCode Reverse String,从中点往两边扫描不停 swap ),然后再根据空格,针对每个单词再做一次 Reverse String 让单词还原回正确的顺序,这个操作还可以并行(不过 Python 因为 GIL 体验不到这个)。
lincanbin
   15
lincanbin  
   2019 年 3 月 17 日 via Android   ❤️ 3
考察算法的主要目的是性能优化,而不是得出解,不然我一个遍历大法岂不是 leetcode 无敌了?
你的解跟其他人的解,占用了多少时钟周期心里要有个底……
20015jjw
   16
20015jjw  
   2019 年 3 月 17 日 via Android
lz 这个刷题态度没用的啊..
做出来不代表做得好
tony601818
   17
tony601818  
   2019 年 3 月 17 日
这是研究 API 还是研究算法?
codechaser
   18
codechaser  
   2019 年 3 月 17 日 via Android
@lincanbin 怎么并行啊
ivechan
   19
ivechan  
   2019 年 3 月 17 日
@Qzier 那为啥不用 reversed 函数。
darkTianTian
   20
darkTianTian  
OP
   2019 年 3 月 17 日
@20015jjw 看来有些面试官要求不同,我再优化一下。
darkTianTian
   21
darkTianTian  
OP
   2019 年 3 月 17 日
@lincanbin 嗯,看来部分题还需要优化。。
darkTianTian
   22
darkTianTian  
OP
   2019 年 3 月 17 日
@ivechan reversed 确实比[::-1]要好,我优化一下。
JerryCha
   23
JerryCha  
   2019 年 3 月 17 日
草,拿 C 写的心里不平衡了
ipwx
   24
ipwx  
   2019 年 3 月 17 日
@xupefei 我觉得如果你同时给这个方法和高性能的方法,我如果是面试官,我会很高兴。。。

因为确实有可读性 > 性能的场景。
iyaozhen
   25
iyaozhen  
   2019 年 3 月 17 日 via Android
@JerryCha 放宽心,那种解法面试过不了的
Justin13
   26
Justin13  
   2019 年 3 月 17 日 via Android
说真的,刷算法还得上 C。
亲身经历,因为当你需要算法时,就是追求最佳时间 /空间复杂度的时候。
很多原生的方法性能并不好,虽然写起来很舒服但是没用。而 C 的版本就是最通用,性能最好的。
@JerryCha
darkTianTian
   27
darkTianTian  
OP
   2019 年 3 月 17 日
@ipwx 嗯,是,有时候确实要多写几种方法,搞不清他需要的是哪种。
darkTianTian
   28
darkTianTian  
OP
   2019 年 3 月 17 日
@Justin13 你说的有道理,不过在 python 里面有些原生的方法是通过底层 C 优化过的,所以有的时候,拆开写反倒性能不好,虽然理论上时间复杂度更低。
Justin13
   29
Justin13  
   2019 年 3 月 17 日 via Android
@darkTianTian 但是你不知道哪些优化过,那些没有。而 C 的写法是最基础,也是最全面的。任何一个地方都在掌握之下。
darkTianTian
   30
darkTianTian  
OP
   2019 年 3 月 17 日
@Justin13 嗯,不过觉得 C 太难了
darknoll
   31
darknoll  
   2019 年 3 月 17 日
做算法题怎么能用 python,肯定不可以的
Lisanaaa
   32
Lisanaaa  
   2019 年 3 月 17 日
重在思想,Python 也可以

结构化算法刷题训练指南: https://xiaozhuanlan.com/Lisanaaa

拿到题目首先干什么?关注哪些条件?怎么找到解题线索?怎么套已有模版?暴力解法是什么?写完暴力解法应该怎么优化?从哪些方面优化?优化后怎么总结?怎么编写自己的解题模版?

经过上百篇文章的有序结构化刻意训练,你将拥有自己的一套解题体系,算法面试不再是你的短板!

结构化算法刷题训练指南: https://xiaozhuanlan.com/Lisanaaa
tinydebian
   33
tinydebian  
   2019 年 3 月 18 日
楼主,我有些 Python 的工作需要请人帮助,你愿意吗?
darkTianTian
   34
darkTianTian  
OP
   2019 年 3 月 18 日
@tinydebian 是什么样类型的工作呢
推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
© 2026 V2EX · 59ms · 3.9.8.5