algorithm – 线性时间内列表中非重复元素的最小值

给定未排序的数字列表(可以是int或double),给出算法以在列表和线性时间的一次遍历中找到非重复元素的min. (没有空间限制)

例如.

Given list is [2, 7, 9, 5, 2, 8, 3, 5, 1, 5, 6, 1]   
Non-repeating elements are [7, 9, 8, 3, 6]  
Min non-repeating element is 3

我通过制作两个散列集来尝试这个,一个用于存储非重复元素,另一个用于存储重复元素,另一个用于存储非重复散列集的min.这可以在少数情况下给出线性时间,但不是全部.

提前致谢.

最佳答案 首先,找到所有非重复项目,例如hashmap with key = item和value = occurences.

接下来,浏览hashmap并找到值为1的min键.

这在O(2n)中是线性的

点赞