微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

段树构建?

如何解决段树构建?

关于递归段树的构建时间复杂性,我得到了矛盾的证据。

某些资料来源(维基百科)声称它是O(N * log(N)),而另一些人则声称它是O(N)。我的直觉说这是O(N),因为我们有2N个节点和2N-1个边。

是哪个?

注意:我们正在使用以下功能构建细分树:

private int build(int[] a,int i,int l,int r){
    if(l == r){
      nodes[i] = a[l];
    }else{
      nodes[i] = Math.min(build(a,i*2,l,(l+r)/2),build(a,i*2+1,(l+r)/2+1,r));
    }
    return nodes[i];
  }

我们不对数组中的每个值进行点更新。

解决方法

请注意,它只是DFS算法和DFS时间复杂度为O(| V | + | E |)。

所以这意味着复杂度为O(2n + 2n-1)= O(n)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?