我应该使用八卦树吗?

妈妈

因此,对于一项分配,我们要求查找针对给定序列编写的伪代码,并从该序列中找到数字的最大频率。因此,一个简单的例子是:

[1,8,5,6,6,7,6,6,1,1,5,8] =>出现频率最高的数字是6。“获胜者”是6。

我们必须在O(nlogm)时间实现它,其中m是不同数字的数量。因此,在上面的示例中,有5个不同的数字(m = 5)。

我的方法是遍历序列中的每个数字,并将其添加到二叉树中(如果尚不存在)并增加频率。因此,对于序列中的每个数字,我的程序都转到二叉树,找到元素(以logm时间表示)并将频率增加1。它确实执行n次logm,因此程序在O(nlogm)中运行。但是,要找出频率最大的数字又要花费O(m)。我剩下O(nlogm + m),通过删除低阶术语使我剩下O(m),这不是教授所要的。

我从课堂上记得,为了将最常访问的项保留在根目录上,使用展开树将是一个很好的选择,因此给我O(1)或最多O(logn)来使我成为“赢家” ?我不知道从哪里开始实现八叉树。

如果您能提供任何见解,我将不胜感激。

public E theWinner(E[] C) {
    int i = 0;
    while (i < C.length) {
        findCandidate(C[i], this.root);
    }
    // This is where I'm stuck, returning the winner in < O(n) time.

}

public void findNumber(E number, Node<E> root) {
    if (root.left == null && root.right == null) {
        this.add(number); 
        //splay tree?
    } else if (root.data.compareTo(number) == 0) {
        root.freqCount = root.freqCount + 1;
        //splay tree?
    } else {
        if ( root.data.compareTo(number) < 0) {
            findNumber(number, root.right);
        } else {
            findNumber(number, root.left);
        }
    }
}
克拉斯科维奇

您不需要八卦树。O(n log m + m)O(n log m)因为不同元素的数量m不大于元素的总数n因此,您可以在处理输入序列以找到最大值之后遍历树中的所有元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么教科书中的八卦树与我的八卦树不同?

来自分类Dev

我如何找到八卦到达链接/ URL的方式?

来自分类Dev

新的cassandra节点无法与种子八卦

来自分类Dev

阿帕奇·卡桑德拉(Apache Cassandra):无法八卦

来自分类Dev

在哪里可以找到八卦菜单图标列表?

来自分类Dev

Hyperledger Fabric八卦验证RemotePeer的证书哈希

来自分类Dev

无法替换死的cassandra节点,因为它在八卦中不存在

来自分类Dev

Cassandra服务器上的错误:无法与任何种子八卦

来自分类Dev

启动期间遇到异常:无法八卦任何种子

来自分类Dev

卡桑德拉(Cassandra)收到了无效的八卦代言人

来自分类Dev

如何在akka中禁用“收到的八卦状态”日志?

来自分类Dev

锚点和八卦领先点有什么区别?

来自分类Dev

Kops 创建集群在 AWS Linux 中因八卦失败

来自分类Dev

我应该使用参考吗?

来自分类Dev

我应该使用LightOpenID吗?

来自分类Dev

我应该使用Lua吗?

来自分类Dev

我应该使用Sqlite吗

来自分类Dev

我应该使用webview吗?

来自分类Dev

我应该使用继承吗?

来自分类Dev

我应该使用模式吗

来自分类Dev

我应该使用C ++虚拟方法吗?

来自分类Dev

我应该使用iframe而不是ajax吗?

来自分类Dev

我应该使用单独的mysql表吗

来自分类Dev

我应该对Laravel使用.gitignore吗?

来自分类Dev

我应该使用移位或除法吗?

来自分类Dev

我应该对单身人士使用改造吗?

来自分类Dev

我应该使用shutil.copytree吗?

来自分类Dev

我不应该使用RecyclerView吗?

来自分类Dev

我应该使用图谱库吗?