推荐学习书目
› 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
darkTianTian
V2EX  ›  Python

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

  •  
  •   darkTianTian · Mar 16, 2019 · 7974 views
    This topic created in 2789 days ago, the information mentioned may be changed or developed.

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

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


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

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

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

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

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

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

    结构化算法刷题训练指南: https://xiaozhuanlan.com/Lisanaaa
    tinydebian
    tinydebian
    Mar 18, 2019
    33
    楼主,我有些 Python 的工作需要请人帮助,你愿意吗?
    darkTianTian
    darkTianTian
    OP
    Mar 18, 2019
    34
    @tinydebian 是什么样类型的工作呢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3098 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 04:58 · PVG 12:58 · LAX 20:58 · JFK 23:58
    ♥ Do have faith in what you're doing.