V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
AkaGhost
V2EX  ›  程序员

想知道大家工作中力扣 Hot100 里的哪个算法在业务逻辑里会用的比较多?为什么?

  •  
  •   AkaGhost · 2 天前 · 3235 次点击
    57 条回复    2025-03-22 14:22:28 +08:00
    evan1
        1
    evan1  
       2 天前   ❤️ 11
    完全没有, 我的业务逻辑就是 CRUD.
    securityCoding
        2
    securityCoding  
       2 天前
    用到几乎为 0 ,倒是时间/空间复杂度在做设计时经常会考虑考虑
    angrylid
        3
    angrylid  
       2 天前
    没有,没有,没有。
    力扣主要是起到筛人的作用
    coldle
        4
    coldle  
       2 天前   ❤️ 5
    拿位运算写状态 ☝️🤣
    niubilewodev
        5
    niubilewodev  
       2 天前
    没有。
    99.99%的工作不需要什么算法,我同事要是在项目上自己写算法,我第一个反对。
    wuzhewuyou
        6
    wuzhewuyou  
       2 天前 via Android
    没有,面试时啃一下
    irisdev
        7
    irisdev  
       2 天前   ❤️ 1
    dfs 肯定会有,其他基本没用过
    ppxppx
        8
    ppxppx  
       2 天前 via Android   ❤️ 1
    很多,搞传统算法解决 PCB 布线问题。感觉自己时不时就得造个算法解决问题😂,不然根本搞不下去。真心累,蛮有压力的,不过也挺有意思。
    devfeng
        9
    devfeng  
       2 天前   ❤️ 2
    android 开发,最近写过的算法:dfs 查找 View 树,视频片段合并区间
    nightwitch
        10
    nightwitch  
       2 天前
    最基本的倒腾遍历树状结构还算常用吧,如果你的代码出现了树状结构或者图这种数据结构的话,肯定会有需求来花式遍历的。
    然后什么 LRU 啊,找一堆数据里前 K 个最大的这种还是业务代码会出现的。
    Leetcode 经常高频出现的链表有关的题基本不会在工作里出现,链表太少见了
    LotusChuan
        11
    LotusChuan  
       2 天前   ❤️ 6
    唯一一次是查 bug 发现源头是个前人写的二叉树,改成三方库就修好了
    yinmin
        12
    yinmin  
       2 天前 via iPhone
    这个和大学里的高等数学一样呢,工作中多少人会用到高等数学呢(肯定有但不多)
    yinmin
        13
    yinmin  
       2 天前 via iPhone
    2000/2010 年代还没这样,为啥最近小十年招聘热衷于这类题目?有一个原因是:有一小撮牛人是从小学初中就开始走 noip-nio-acm 上来的,他们认识这类题目是基础,不会做就不是程序员。
    Bingchunmoli
        14
    Bingchunmoli  
       1 天前 via Android
    哈希表算吗 乁⁠༼⁠☯⁠‿⁠☯⁠✿⁠༽⁠ㄏ
    Avafly
        15
    Avafly  
       1 天前
    还是有些的, 最近在用 C 语言做图像处理相关就要用到各种算法, 要不太慢了.
    比如在实现连通组件分析的时候用 two-pass 算法实现, 还用到了 disjoint-set 数据结构, 最后速度比 opencv 还快.
    MRG0
        16
    MRG0  
       1 天前
    好的库太多了,拿来吧你
    songray
        17
    songray  
       1 天前
    各种从祖宗节点找重孙节点和从重孙节点找祖宗节点的地方...
    anviod
        18
    anviod  
       1 天前
    有的增量更新/同步数据 找出更新前和更新后的差别 需要用到
    sir283
        19
    sir283  
       1 天前 via Android
    我直接 ctrl c 跟 ctrl v ,完全用不到那种高深的算法,你的就是我的,我的还是我的。
    erenming
        20
    erenming  
       1 天前
    @LotusChuan haha ,说不定其实也不一定是自己写的,大概率是第三方库 copy 过来改的
    wyntalgeer
        21
    wyntalgeer  
       1 天前
    用不了一点
    iyiluo
        22
    iyiluo  
       1 天前
    递归吧,像菜单,组织树,比较常见
    Dorathea
        23
    Dorathea  
       1 天前
    如果只是停留在业务层, 几乎不会用到
    都是数据结构+简单的遍历, 少量位操作. 很少用到称得上算法的东西
    脱离业务向底层, 又息息相关, 用到的东西几乎全是数据结构+算法
    luckyrayyy
        24
    luckyrayyy  
       1 天前
    topk 这种用到过,别的真没
    ixixi
        25
    ixixi  
       1 天前
    都是建议同事把自己写的算法改成第三方库。。。
    soulflysimple123
        26
    soulflysimple123  
       1 天前
    最常用的就是各种树形结构的处理,比如本节点可以查看当前节点一直到根节点,当前节点所有子节点的数据之类
    qwertyzzz
        27
    qwertyzzz  
       1 天前
    提前 hashMap 存储这种吧 我记得有个题是这样
    csfreshman
        28
    csfreshman  
       1 天前
    可以不用,但不能不会
    hmxxmh
        29
    hmxxmh  
       1 天前
    进去拧螺丝,除了大牛,谁敢说自己写的算法能好过开源的。。所以都是 curd,调调 api ,调调参数
    InkStone
        30
    InkStone  
       1 天前
    做算法题很多时候不是为了让你真的在业务中实现那个数据结构,而是让你对自己代码的时间、空间复杂度有个直观的概念。
    kilakilia007
        31
    kilakilia007  
       1 天前 via Android
    拓扑判环,递归,没了
    qiuhang
        32
    qiuhang  
       1 天前
    真正原样运用的没有,但是对于时间空间复杂度的思考,会潜移默化地表现在日常写业务代码的过程中。然后一些优化思路偶尔也能用上。举个例子,我遇到过个真实需求,给定 500 万个预先处理好的 7 位浮点数,然后输入一个浮点数,算出来有多少个浮点数比它大。因为要用于线上,所以对耗时的要求比较高,需要在 5 毫秒内搞定。常规地去遍历一遍,一一比对,得花两三百毫秒。这个时候力扣那些以空间换时间的思路就能派上用场了。
    qiuhang
        33
    qiuhang  
       1 天前
    还有就是对于递归的理解,没刷力扣之前,真觉得自己理解了递归,刷完才发现自己原来根本不会用。递归在工作中用到的机会还挺多。
    coderzhangsan
        34
    coderzhangsan  
       1 天前
    主要用来就是筛人,有些功能需要考虑算法设计实现,但是现在 ai 普及,这东西完全交给 ai 去写,所以这块权重又弱了。
    meilicat
        35
    meilicat  
       1 天前
    @coldle 太对了 我就这样搞过
    meilicat
        36
    meilicat  
       1 天前
    就写了个递归吧 其他的都没用到
    xxx78797084
        37
    xxx78797084  
       1 天前
    手写 parser (
    fulln
        38
    fulln  
       1 天前
    位运算,前缀树,递归如果也算的话
    Donaldo
        39
    Donaldo  
       1 天前   ❤️ 1
    我最经常用的就是二分
    axuahui
        40
    axuahui  
       1 天前 via Android
    树。
    我再一次业务中的 map 的 key 用了 set
    构建它的时候用了树。

    时间复杂度 o1 ,写了之后同事都说牛批
    rogerer
        41
    rogerer  
       1 天前
    二分,发生在每次定位哪个 commit 改坏了的时候
    ccpp132
        42
    ccpp132  
       1 天前
    @yinmin 10 年代已经这样了,这一套从硅谷大厂来的,不是国内的发明。

    不过算法其实挺有用的。我有个亲身经历的例子,以前当志愿者给几百个文件排序(物理),采用快排极大的提高了效率。就按一个分界点直接把文件全分两堆再分别排...
    1252603486
        43
    1252603486  
       1 天前
    找 bug 的时候二分法用的最多,不过大部分时候没意识到这是个算法,还有如果给一堆文件排序的话,分好几块一起排序快了很多
    ooo4
        44
    ooo4  
       1 天前
    dfs
    HikariLan
        45
    HikariLan  
       1 天前
    DFS/BFS 、还有树啊链表啊这类的算法确实会在工作中用一些
    像是动态规划这种就基本没用过了,感觉没多少业务用这些
    flowel
        46
    flowel  
       1 天前
    学算法的目的,是在你真正遇到困难的时候,可以知道有什么方法可以解决。虽然真实应用场景可能少,但是你得懂。
    hueralin
        47
    hueralin  
       1 天前
    @coldle 感觉这个可以,老哥方便讲讲么
    pureGirl
        48
    pureGirl  
       1 天前
    处理数据递归用的最多,二叉树链表啥的用不到
    shaozelin030405
        49
    shaozelin030405  
       1 天前
    自己写 monorepo 内,包依赖关系的时候会用到图,以及入度出度。
    WorseIsBetter
        50
    WorseIsBetter  
       1 天前
    @ccpp132 #42

    这让我想起来以前去支教的时候,学校在搞「趣味教学」,每个学科不定期都有以小组活动为形式锻炼思维能力的课程安排。

    有一次二年级数学课的内容是四人一组给印有 1~200 数字的卡片排序,比哪一组最快。

    最快的一组,把 200 张卡片分了 8 份,先用「简单目测」的方式给每份分别排好序,然后做四次 2-way merge ,最后做一次 4-way merge ,充分发挥了多人协作的优势,把其他小组远远甩在后面。

    这还是小朋友们在短短 15 分钟讨论时间,没有参考资料的前提下,自己思考出来的,令我不禁为之折服。可惜我当时没在现场,如果有机会很想和他们好好聊聊。
    coldle
        51
    coldle  
       1 天前
    @hueralin #47
    想想 linux 文件系统权限和 chmod 就明白啦
    wallfacer5
        52
    wallfacer5  
       1 天前
    前段时间用回溯法做了数据匹配。开始自己先写了一遍,后面要 AI 检查修改,比我自己写的要好
    ccpp132
        53
    ccpp132  
       1 天前
    @WorseIsBetter 小学生能这么搞确实牛啊。我们当时是测试过,大家觉得分两堆比合并两堆省脑子所以就是快排不是归并了
    Georgedoe
        54
    Georgedoe  
       1 天前
    大部分是数据结构方面的 , 比如 TreeMap , java 都有实现了 , 了解使用场景就够了
    AkaGhost
        55
    AkaGhost  
    OP
       1 天前
    谢谢各位 受益匪浅 🥰
    bearboss
        56
    bearboss  
       17 小时 27 分钟前
    @irisdev 业务代码都是尽量迭代,递归没控制好就爆栈了
    irisdev
        57
    irisdev  
       17 小时 24 分钟前 via Android
    @bearboss 这个是的。不过能预估数据量不大的情况下递归很方便,比如上面有人说的组织树,最多几百几千个节点无所谓的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1181 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:46 · PVG 07:46 · LAX 16:46 · JFK 19:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.