V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Sanko
V2EX  ›  问与答

编程语言为什么不把 leetcode 上面的一些常用的算法集成进内部呢,比如最长公共子序列啊,最长子串

  •  
  •   Sanko · 2021-08-15 00:29:47 +08:00 · 3861 次点击
    这是一个创建于 1196 天前的主题,其中的信息可能已经有所发展或是发生改变。
    数组和字符串相关的基础算法
    第 1 条附言  ·  2021-08-15 10:04:52 +08:00
    我知道标准库,也知道有些第三方库都可以实现
    但是还是想问下各位彦祖为什么编程语言本身不做呢?一个算法最多浪费几 kb 左右的存储空间而已
    出于什么权衡不做或者交给第三方库来做呢
    第 2 条附言  ·  2021-08-15 13:00:47 +08:00
    感谢各位认真回答的彦祖
    阴阳怪气的爪巴
    37 条回复    2021-08-17 02:22:04 +08:00
    EPr2hh6LADQWqRVH
        1
    EPr2hh6LADQWqRVH  
       2021-08-15 00:33:50 +08:00 via Android   ❤️ 5
    要你何用
    sutra
        2
    sutra  
       2021-08-15 00:37:53 +08:00
    不是有很多工具类库么?
    Hsinyao
        3
    Hsinyao  
       2021-08-15 01:03:06 +08:00 via iPhone
    楼主这个 idea 还挺有意思
    learningman
        4
    learningman  
       2021-08-15 01:16:08 +08:00 via Android
    然后加多少呢,全加进去全变成内置函数?那一个对象得拖多大一串啊。
    不是有 algorithm.h 嘛,你也可以自己写一个啊,指不定用的人多就成了 C24 标准呢
    ipwx
        5
    ipwx  
       2021-08-15 01:45:06 +08:00
    如果这两个算法也算是常用需要进库函数,那么有很多很多同样“常用”的算法也得进。

    说白了这俩就是特殊的动态规划而已啊,随手写一个。又不够常用,进库函数没意思。
    Yvette
        6
    Yvette  
       2021-08-15 01:59:02 +08:00   ❤️ 1
    没理解错的话,标准库不就是干这个的?如果你需要的东西现在标准库里还没有的话,大概率是这个需求不够常见或者不够通用。
    Jooooooooo
        7
    Jooooooooo  
       2021-08-15 02:07:32 +08:00
    最常用的有, 比如 java, python 自带的 sort 方法都是一种非常高效的 timsort 算法

    但其它不是很常用的一般都是第三方工具库去实现的
    levelworm
        8
    levelworm  
       2021-08-15 02:50:16 +08:00 via Android
    这是 leetcode 常用吧,现实中不知道是否常用。今天看了三道题,有一道是什么二叉树汇总,就是每个 node 是所有比自己小的 node 之和。这题目仅仅是中等难度但是我真不知道现实中会不会有用。。。
    az467
        9
    az467  
       2021-08-15 03:14:07 +08:00
    刷题魔怔了属于是
    raaaaaar
        10
    raaaaaar  
       2021-08-15 03:35:55 +08:00 via Android
    不够常用,通常第三方库有
    Perry
        11
    Perry  
       2021-08-15 03:50:02 +08:00 via iPhone
    有些题目完全是伪需求,或者现实需求比题目要复杂很多,这种算法很难完全通用。
    Trim21
        12
    Trim21  
       2021-08-15 06:02:09 +08:00 via Android
    用到的算法是有会的,但是你提到的这种大部分情况也用不上吧…
    Rheinmetal
        13
    Rheinmetal  
       2021-08-15 06:54:10 +08:00
    不刷题你 1 年都用不到一次聘什么进标准库
    swulling
        14
    swulling  
       2021-08-15 07:47:16 +08:00 via iPhone
    标准库会放一些工程上常用的算法,但是你提的两个显然不是
    Cu635
        15
    Cu635  
       2021-08-15 09:48:59 +08:00
    lz 应该知道“标准库”这回事儿吧……
    Sanko
        16
    Sanko  
    OP
       2021-08-15 10:06:05 +08:00
    @learningman 用的时候可以按需导入呀
    Sanko
        17
    Sanko  
    OP
       2021-08-15 10:14:38 +08:00
    @Cu635 老哥,我肯定知道啊
    vindurriel
        18
    vindurriel  
       2021-08-15 10:29:39 +08:00 via iPhone
    因为命中率低 大部分用不上 啊哈哈
    存在已知可解编程问题的最简实现大全这种 repo
    misdake
        19
    misdake  
       2021-08-15 10:46:30 +08:00
    一点也不常用啊
    ipwx
        20
    ipwx  
       2021-08-15 10:51:39 +08:00
    @Sanko 全都塞标准库,那运行时和编译速度该多慢啊。当然要第三方独立的库啊

    一个算法几 kb,但像你说的这俩算法都不够通用啊,不常用啊。按你这个标准筛选,找出来的算法都加进去,标准库可以多几百兆,编译速度可以下降一个数量级啊。

    明明手写也就 50 行代码的事情。。。
    ltm
        21
    ltm  
       2021-08-15 10:57:21 +08:00 via Android   ❤️ 2
    「内卷对人智力和行为的异化」
    learningman
        22
    learningman  
       2021-08-15 11:00:42 +08:00
    "出于什么权衡不做或者交给第三方库来做呢"
    因为别人觉得没用啊,你觉得有用你自己包装一个开源出来呗,啥叫交给第三方库,三方库又不是标准委员会发外包做的
    msg7086
        23
    msg7086  
       2021-08-15 11:11:10 +08:00   ❤️ 1
    不如先解释一下编程语言为什么要把 leetcode 的题做进标准库里,而不是先无脑假定应该做进去,然后问为什么不做。
    BiteTheDust
        24
    BiteTheDust  
       2021-08-15 11:18:00 +08:00
    可以参考 atcoder 他们的库里甚至整合了网络流
    不过从另一个角度来说 leetcode 面相群体是那些找工作面试的人 面试的时候总不能说我调个 leetcode 的库吧
    BiteTheDust
        25
    BiteTheDust  
       2021-08-15 11:20:10 +08:00
    https://github.com/atcoder/ac-library
    可以看看,其实也没整合几种算法,但是都是比较常用,而且只要知道输入输出就可以的
    Cbdy
        26
    Cbdy  
       2021-08-15 11:21:07 +08:00
    “一个算法最多浪费几 kb 左右的存储空间而已”
    xylxAdai
        27
    xylxAdai  
       2021-08-15 11:21:48 +08:00
    因为这些只对刷题的人常用,几 kb 不是空间啊?
    anguiao
        28
    anguiao  
       2021-08-15 11:22:43 +08:00 via Android
    通用性不够强、使用频率不够高
    c0xt30a
        29
    c0xt30a  
       2021-08-15 11:49:08 +08:00
    c++: lower_bound, upper_bound, rotate, next_permutation, binary_search, nth_element ...
    witcherhope
        30
    witcherhope  
       2021-08-15 11:49:27 +08:00
    关键字 leetcode 常用,都说了八股文常用,实际场景能用到的基本都进了标准库,并且一直在迭代。
    agagega
        31
    agagega  
       2021-08-15 11:57:44 +08:00 via iPhone
    会做,但考虑到通用性会做的比较抽象。楼上有人说了 C++,Ruby 的 Enumerable 也有很多很好用的方法 https://ruby-doc.org/core-3.0.2/Enumerable.html
    zxCoder
        32
    zxCoder  
       2021-08-15 12:41:20 +08:00 via Android
    因为大多数没用啊………
    musi
        33
    musi  
       2021-08-15 14:30:53 +08:00
    有些算法只能在刷题时候见到
    James369
        34
    James369  
       2021-08-15 20:31:06 +08:00
    我认为这些什么 leetcode 啊、设计模式啦、敏捷工程啦,都是些花拳秀脚的玩意,90%情况下是用不到的(或者说自然而然就会了)。 其实都是用来懵人的。
    matrix67
        35
    matrix67  
       2021-08-15 22:24:56 +08:00
    这个应该就相当于汉语为啥没有一个专有名词描述 “有人会在 V2EX 上问编程语言为什么不把 leetcode 上面的一些常用的算法集成进内部呢” 这种行为。

    但是一旦用的人多了,就会塞到汉语的标准库里,比如黔驴技穷啊,泯然众人啊之类的。

    一个道理。
    cyrivlclth
        36
    cyrivlclth  
       2021-08-16 10:27:14 +08:00
    github copilot ?
    kilasuelika
        37
    kilasuelika  
       2021-08-17 02:22:04 +08:00 via Android
    从来没在刷题以外的场景见过需要用这些算法的情况。所以如楼上说的,根本不常用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.