classFindSumPairs:def__init__(self,nums1:List[int],nums2:List[int]):self.cnt=Counter(nums2)self.nums1=nums1self.nums2=nums2defadd(self,index:int,val:int)->None:self.cnt[self.nums2[index]]-=1self.nums2[index]+=valself.cnt[self.nums2[index]]+=1defcount(self,tot:int)->int:returnsum(self.cnt[tot-x]forxinself.nums1)# Your FindSumPairs object will be instantiated and called as such:# obj = FindSumPairs(nums1, nums2)# obj.add(index,val)# param_2 = obj.count(tot)
classFindSumPairs{privateint[]nums1;privateint[]nums2;privateMap<Integer,Integer>cnt=newHashMap<>();publicFindSumPairs(int[]nums1,int[]nums2){this.nums1=nums1;this.nums2=nums2;for(intx:nums2){cnt.merge(x,1,Integer::sum);}}publicvoidadd(intindex,intval){cnt.merge(nums2[index],-1,Integer::sum);nums2[index]+=val;cnt.merge(nums2[index],1,Integer::sum);}publicintcount(inttot){intans=0;for(intx:nums1){ans+=cnt.getOrDefault(tot-x,0);}returnans;}}/** * Your FindSumPairs object will be instantiated and called as such: * FindSumPairs obj = new FindSumPairs(nums1, nums2); * obj.add(index,val); * int param_2 = obj.count(tot); */
classFindSumPairs{public:FindSumPairs(vector<int>&nums1,vector<int>&nums2){this->nums1=nums1;this->nums2=nums2;for(intx:nums2){++cnt[x];}}voidadd(intindex,intval){--cnt[nums2[index]];nums2[index]+=val;++cnt[nums2[index]];}intcount(inttot){intans=0;for(intx:nums1){ans+=cnt[tot-x];}returnans;}private:vector<int>nums1;vector<int>nums2;unordered_map<int,int>cnt;};/** * Your FindSumPairs object will be instantiated and called as such: * FindSumPairs* obj = new FindSumPairs(nums1, nums2); * obj->add(index,val); * int param_2 = obj->count(tot); */
typeFindSumPairsstruct{nums1[]intnums2[]intcntmap[int]int}funcConstructor(nums1[]int,nums2[]int)FindSumPairs{cnt:=map[int]int{}for_,x:=rangenums2{cnt[x]++}returnFindSumPairs{nums1,nums2,cnt}}func(this*FindSumPairs)Add(indexint,valint){this.cnt[this.nums2[index]]--this.nums2[index]+=valthis.cnt[this.nums2[index]]++}func(this*FindSumPairs)Count(totint)(ansint){for_,x:=rangethis.nums1{ans+=this.cnt[tot-x]}return}/** * Your FindSumPairs object will be instantiated and called as such: * obj := Constructor(nums1, nums2); * obj.Add(index,val); * param_2 := obj.Count(tot); */
classFindSumPairs{privatenums1:number[];privatenums2:number[];privatecnt:Map<number,number>;constructor(nums1:number[],nums2:number[]){this.nums1=nums1;this.nums2=nums2;this.cnt=newMap();for(constxofnums2){this.cnt.set(x,(this.cnt.get(x)||0)+1);}}add(index:number,val:number):void{constold=this.nums2[index];this.cnt.set(old,this.cnt.get(old)!-1);this.nums2[index]+=val;constnow=this.nums2[index];this.cnt.set(now,(this.cnt.get(now)||0)+1);}count(tot:number):number{returnthis.nums1.reduce((acc,x)=>acc+(this.cnt.get(tot-x)||0),0);}}/** * Your FindSumPairs object will be instantiated and called as such: * var obj = new FindSumPairs(nums1, nums2) * obj.add(index,val) * var param_2 = obj.count(tot) */
/** * @param {number[]} nums1 * @param {number[]} nums2 */varFindSumPairs=function(nums1,nums2){this.nums1=nums1;this.nums2=nums2;this.cnt=newMap();for(constxofnums2){this.cnt.set(x,(this.cnt.get(x)||0)+1);}};/** * @param {number} index * @param {number} val * @return {void} */FindSumPairs.prototype.add=function(index,val){constold=this.nums2[index];this.cnt.set(old,this.cnt.get(old)-1);this.nums2[index]+=val;constnow=this.nums2[index];this.cnt.set(now,(this.cnt.get(now)||0)+1);};/** * @param {number} tot * @return {number} */FindSumPairs.prototype.count=function(tot){returnthis.nums1.reduce((acc,x)=>acc+(this.cnt.get(tot-x)||0),0);};/** * Your FindSumPairs object will be instantiated and called as such: * var obj = new FindSumPairs(nums1, nums2) * obj.add(index,val) * var param_2 = obj.count(tot) */
publicclassFindSumPairs{privateint[]nums1;privateint[]nums2;privateDictionary<int,int>cnt=newDictionary<int,int>();publicFindSumPairs(int[]nums1,int[]nums2){this.nums1=nums1;this.nums2=nums2;foreach(intxinnums2){if(cnt.ContainsKey(x)){cnt[x]++;}else{cnt[x]=1;}}}publicvoidAdd(intindex,intval){intoldVal=nums2[index];if(cnt.TryGetValue(oldVal,outintoldCount)){if(oldCount==1){cnt.Remove(oldVal);}else{cnt[oldVal]=oldCount-1;}}nums2[index]+=val;intnewVal=nums2[index];if(cnt.TryGetValue(newVal,outintnewCount)){cnt[newVal]=newCount+1;}else{cnt[newVal]=1;}}publicintCount(inttot){intans=0;foreach(intxinnums1){inttarget=tot-x;if(cnt.TryGetValue(target,outintcount)){ans+=count;}}returnans;}}/** * Your FindSumPairs object will be instantiated and called as such: * FindSumPairs obj = new FindSumPairs(nums1, nums2); * obj.Add(index,val); * int param_2 = obj.Count(tot); */