标签:index arr nums int 树状 tree Solution 数组
#include <bits/stdc++.h> #include <unordered_map> //数状数组; using namespace std; class Solution { private: int lowbit(int x) { return x & -x; } vector<int> arr; vector<int> tree; public: Solution(vector<int> & nums){ arr = nums; int n = arr.size(); arr.insert(arr.begin(),0); tree.resize(n+1,0); for(int i =1;i<=n;i++){ for(int j = i- lowbit(i)+1;j<=i;j++){ tree[i] += arr[j]; } } }; //查询nums数组包含index下标值的前缀和 int query(int index){ index+= 1; int sum = 0; while(index>0){ sum += tree[index]; index -= lowbit(index); } return sum; } //在num数组的下标index处,加delta; void add(int index,int delta){ index+=1; while(index < arr.size()){ tree[index] += delta; index += lowbit(index); } } }; int main(){ vector<int> nums={1,2,3,4,5,6}; Solution * a =new Solution(nums); int b = a->query(2); a->add(1,3); int b1 = a->query(3); return 0; }
标签:index,arr,nums,int,树状,tree,Solution,数组 来源: https://www.cnblogs.com/cotoyo25/p/16390644.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。