每个最佳算法都是这个
1)创建一个大小(k-1)的临时数组来存储元素及其计数(输出元素将在这些k-1元素中)。以下是临时数组元素的结构。
2)遍历输入数组并更新每个遍历元素的temp [](添加/删除元素或增加/减少计数)。数组temp []在每一步都存储潜在的(k-1)候选者。此步骤需要O(nk)时间。
3)迭代最终(k-1)个潜在候选者(存储在temp []中)。或每个元素,检查它是否实际计数超过n / k。此步骤需要O(nk)时间。
我提到的资源是: -
**对我来说,更好的算法如下所示,即O(n)**
1)开始迭代数组。
2)对于每个元素,检查哈希映射中是否存在元素。如果是,则增加计数器,否则将其添加到计数器1
3)在添加每个元素之后,检查计数是否大于n / k次。如果是打印
这里的存储器复杂度将是O(N),这比O(K-1)差,但是时间复杂度要好得多,这是O(n)与之前算法中的O(nk)相比。
考虑到时间复杂性和简单性/可读性或答案是Depends on
取决于我们想要妥协的地方,即在
时间或记忆?