Java教程

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

本文主要是介绍一个业务中遇到的去重算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

 

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

 第三个例子的过程。

 

这篇关于一个业务中遇到的去重算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!