一个业务中遇到的去重算法

业务中遇到一个去重的需求,想了半天没有很好的解决办法,最后的实现用了好多中间对象,实际业务里还有要递归的情况(没具体去看是什么情况),空间复杂度及其糟糕,希望来个大佬可以给些思路,或者给些类似的经典题目,具体抽象如下:

现在有一组对象,每个对象分别有属性【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] //输出

【一个业务中遇到的去重算法】一个业务中遇到的去重算法
文章图片

第三个例子的过程。

    推荐阅读