更新数组中的范围

时间:2014-01-24 19:20:41

标签: algorithm

给定一个长度为N的数组。我需要对这个数组执行某些操作,这些操作有两种类型:

Update a range [x...y]: In which we must divide each number in the given range [x...y] by K.(This division is integer division)

Query a range [x...y]: In which we must output the sum of all the numbers presently in range [x...y].

示例:假设我们有N = 5,K = 2且数组为{1,1,1,1,5} .let,我们有Q(= 5)个查询如下:

2 1 5

1 1 2

2 1 5

1 5 5

2 1 5

然后在此输出中将是:

9

7

4

现在我知道要解决少量查询,但如果Q和N很大,怎么做呢。

1 个答案:

答案 0 :(得分:0)

我没有准确地提出你的问题。但我理解查询...

- >当您对像

这样的输入运行多个查询时

例如: 如果您在范围[2000,10000]中有第一个查询,在范围[2000,4000]中有第二个查询 你最后多次添加这些数字,这很糟糕。

- >尝试使用累积频率的概念。

例如:

1. Compute the cumulative sum for all indexes [0...n-1] in Array.

2. Now, When you need sum for a certain query [x...y] then just do
   Array[y]-Array[x-1].....which would be direct result.

3. Believe me this would save you lot of computation.

4. This concept is similar to Dynamic Programming(try Googling it!!)