Lintcode202 Segment Tree Query solution 题解

Posted 5245a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lintcode202 Segment Tree Query solution 题解相关的知识,希望对你有一定的参考价值。

【题目描述】

For an integer array (index from 0 to n-1, where n is the size of this array), in the corresponding Segment Tree, each node stores an extra attribute max to denote the maximum number in the interval of the array (index from start to end).

 

对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。

 

为Segment Tree设计一个query的方法,接受3个参数root,start和end,线段树root所代表的数组中子区间[start, end]内的最大值。

 

【注】在做此题之前,请先完成线段树构造这道题目。

 

【题目链接】

 

www.lintcode.com/en/problem/segment-tree-query/

 

【题目解析】

 

这应该是Range Query的经典题目之一了。

 

此题可用Segment Tree来做的。 Segment Tree线段树每一个节点都是一段线段,有start和end,然后还可以有其他的值,比如区间和sum,区间最大值max,区间最小值min。我们可以用自底向上构建二叉树的方式构建Segment Tree,这个过程也有点类似于Bottom-up的merge sort,思想也是Divide and Conquer。完毕之后就可以在O(logn)的时间update,或者得到range Sum。

 

【参考答案】

 

www.jiuzhang.com/solutions/segment-tree-query/

以上是关于Lintcode202 Segment Tree Query solution 题解的主要内容,如果未能解决你的问题,请参考以下文章

Lintcode: Segment Tree Modify

Lintcode: Segment Tree Query

lintcode-medium-Segment Tree Query

lintcode-medium-Segment Tree Build

lintcode-medium-Segment Tree Modify

lintcode-medium-Segment Tree Query II