一个业务中遇到的去重算法
业务中遇到一个去重的需求,想了半天没有很好的解决办法,最后的实现用了好多中间对象,实际业务里还有要递归的情况(没具体去看是什么情况),空间复杂度及其糟糕,希望来个大佬可以给些思路,或者给些类似的经典题目,具体抽象如下:
现在有一组对象,每个对象分别有属性【id】【A】【B】,需要按特定规则对这组数据去重。
同一个A,会有多条对应的B,其对应的B中,如果有同一个B,对应多条A,删除重复项。否则保留id最大的一条。最终的结果是,需要保留唯一一条,A=>B的映射(不可将某一A全部删除)。输出需删除的id数组。
不会有不需去重的情况,不会有A-B相同的情况。
样例:
[{id:1,A:1,B:1},{id:2,A:1,B:2}] //输入 [1] //输出[{id:1,A:1,B:1},{id:2,A:1,B:2},{id:3,A:2,B:2}] //输入 [2] //输出[{id:1,A:1,B:1},{id:2,A:1,B:2},{id:3,A:1,B:3},{id:4,A:2,B:2},{id:5,A:2,B:3},{id:6,A:2,B:3},{id:7,A:3,B:3},{id:8,A:4,B:1},{id:9,A:4,B:4},{id:10,A:4,B:3}] //输入 [1,2,4,7,8,10] //输出
【一个业务中遇到的去重算法】
文章图片
第三个例子的过程。
推荐阅读
- 热闹中的孤独
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 一个人的碎碎念
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 七年之痒之后
- 我从来不做坏事
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate