給定乙個整數陣列(下標由 0 到 n-1,其中 n 表示陣列的規模),以及乙個查詢列表。每乙個查詢列表有兩個整數 [start, end] 。 對於每個查詢,計算出陣列中從下標 start 到 end 之間的數的總和,並返回在結果列表中。
注意事項:
在做此題前,建議先完成以下三題:線段樹的構造, 線段樹的查詢,以及線段樹的修改。
樣例:
對於陣列 [1,2,7,8,5],查詢[(1,2),(0,4),(2,4)], 返回 [9,23,20]
挑戰 :
o(logn) time for each query
#ifndef c206_h
#define c206_h
#include
#include
using
namespace
std;
class interval
};class segmentnode
};class solution
return v;
}segmentnode * build(vector
&a, int start, int end)
node->left = build(a, start, (start + end)/2);
node->right = build(a, (start + end)/2 + 1, end);
node->sum = node->left->sum + node->right->sum;
return node;
}long
long query(segmentnode *root, int start, int end)
};#endif
區間求和II
已知 在類的建構函式中給乙個整數陣列,實現兩個方法 query start,end 和 modify index,value 思路 這題非常奇怪,因為難度係數是最高的,但是類結構是完整的,上述兩個函式本身實現也是非常簡單的,我能想到唯一的點就是如何在多個函式之間共享資料,但似乎也算不上難點,而且之間...
區間求和 II
在類的建構函式中給乙個整數陣列,實現兩個方法query start,end 和modify index,value 樣例1 輸入 1,2,7,8,5 query 0,2 modify 0,4 query 0,1 modify 2,1 query 2,4 輸出 10,6,14 說明 給定陣列 a 1,...
PYTHON 區間求和
題目如下 本題思路一定不能像題目描述的那樣,申請乙個1e18大的列表 陣列 因為你會發現 longlongtime 之後 根本申請不出來這麼大的陣列 那麼我們得換一種思路了 區間劃分,即 算出 l3,r3 分別與 l1,r1 l2,r2 的交集len1和len2,然後直接求得結果為len1a len...