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

你遇见过的最 simple 或者最有意思的算法和数据结构

  •  
  •   forgottenPerson · 6 小时前 via Android · 529 次点击

    simple 指的不一定是代码量越少越好

    最有意思指的是给你一种恍然大悟这也能行的感觉以及你感受到的美,美包括奇妙的思路以及时间以及空间复杂度达到你认为的 trade-off,或者有很高的实用价值以及你觉得有趣的。

    8 条回复    2025-01-31 17:12:36 +08:00
    easing
        1
    easing  
       5 小时 53 分钟前 via iPhone   ❤️ 1
    并查集
    coderluan
        2
    coderluan  
       5 小时 34 分钟前
    想到本书《短码之美》,对程序员来说算是邪典了,真正的“防御性”编程。
    wangritian
        3
    wangritian  
       5 小时 15 分钟前
    一堆数字两两成对相同,找唯一独立:异或
    git00ll
        4
    git00ll  
       5 小时 11 分钟前   ❤️ 1
    ```
    这里有一个使用 map 做去重的,我觉得比较巧妙
    datas.stream().filter(distinctByKey(s -> s.getRequestNo())).forEach(v -> {
    doSomeThing(v);
    });

    static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    Map<Object, Boolean> seen = new ConcurrentHashMap<>();
    return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }

    ```
    r6cb
        5
    r6cb  
       3 小时 30 分钟前
    SPFA
    xtreme1
        6
    xtreme1  
       3 小时 23 分钟前
    splay
    nicktogo
        7
    nicktogo  
       2 小时 33 分钟前 via iPhone
    快排的 partition
    yukino
        8
    yukino  
       1 小时 43 分钟前
    Cosplay 快排

    quicksort [] = []
    quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
    where
    lesser = filter (< p) xs
    greater = filter (>= p) xs
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1811 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 17ms · UTC 10:56 · PVG 18:56 · LAX 02:56 · JFK 05:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.