如何解决段树构建?
关于递归段树的构建时间复杂性,我得到了矛盾的证据。
某些资料来源(维基百科)声称它是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 举报,一经查实,本站将立刻删除。