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


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

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

 第三个例子的过程。