给定未排序的数字列表(可以是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)中是线性的