lintcode——區間求和ii
思路:線段樹的構造,線段樹的查詢,線段樹的修改的結合版,三個程式拼接再一起就是這個題目的解法了,和統計前面比自己小的數的個數一樣
class
solution
};private:
segmenttreenode *root;
public:
/* you may need to use some attributes here */
/* * @param a: an integer array
*/solution(vector a)
long
long query(segmenttreenode *root, int start, int end)
/** @param index: an integer
* @param value: an integer
* @return: nothing
*/void modify(int
index, int value)
void modify(segmenttreenode *root, int
index, int value)
else
//root的值等於左節點加右節點
root -> count = root->left->count + root->right->count;
return;
}segmenttreenode *build(int start, int end)
root->left = build(root->start,(root->start+root->end)/2);
root->right= build((root->start+root->end)/2+1 , root -> end);
return root;
}};
區間求和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,...
Lintcode 區間求和 I
yes 樣例 挑戰 o logn time for each query 思路 看到區間求和問題,符合線段樹適用連續區間統計或者查詢的問題。所以,考慮構建合適的線段樹來求解。題目型別與區間最小數問題類似。先構建對應的線段樹,然後查詢 vector a一定要加引用,否則,每次呼叫函式都要拷貝容器,很耗...