首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

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

  •  
  •   darkTianTian · 65 天前 · 4888 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


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

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

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

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

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

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

    结构化算法刷题训练指南: https://xiaozhuanlan.com/Lisanaaa
        33
    tinydebian   63 天前
    楼主,我有些 Python 的工作需要请人帮助,你愿意吗?
        34
    darkTianTian   63 天前
    @tinydebian 是什么样类型的工作呢
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4097 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 09:21 · PVG 17:21 · LAX 02:21 · JFK 05:21
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1