We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
publicstaticintactivityNotifications(List<int>expenditure,intd){vartrail=newSortedDictionary<int,int>();for(inti=0;i<d;i++){varval=expenditure[i];if(!trail.TryGetValue(val,out_))trail[val]=1;elsetrail[val]++;}varnumNotifications=0;for(vari=d;i<expenditure.Count;i++){varmedian=GetMedian(trail,d);if(expenditure[i]>=2*median)numNotifications++;varvalToDrop=expenditure[i-d];varvalToDropFreq=trail[valToDrop];if(valToDropFreq==1)trail.Remove(valToDrop);elsetrail[valToDrop]--;if(i<expenditure.Count-1){varvalToAdd=expenditure[i];if(!trail.TryGetValue(valToAdd,outvarfreq))trail[valToAdd]=1;elsetrail[valToAdd]++;}}returnnumNotifications;}publicstaticdecimalGetMedian(SortedDictionary<int,int>freqs,intnumVals){varnumCases=0;varkeys=freqs.Keys.ToArray();if(numVals%2!=0){varmedianIndex=numVals/2;for(varindFreq=0;indFreq<freqs.Count;indFreq++){varcurValue=freqs[keys[indFreq]];numCases+=curValue;if(numCases>medianIndex)returnkeys[indFreq];}thrownewException($"Median algorithm wrong - d = {numVals}");}// numvals is evenvarrightInd=numVals/2;varleftInd=rightInd-1;varleftValue=0;varrightValue=0;varleftIndSet=false;for(varindFreq=0;indFreq<freqs.Count;indFreq++){varcurValue=freqs[keys[indFreq]];numCases+=curValue;if(numCases>leftInd){if(!leftIndSet){leftValue=keys[indFreq];leftIndSet=true;if(numCases>rightInd){rightValue=leftValue;break;}}elseif(numCases>rightInd){rightValue=keys[indFreq];break;}}}return((decimal)leftValue+rightValue)/2;}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Fraudulent Activity Notifications
You are viewing a single comment's thread. Return to all comments →
C# using a
SortedDictionary
: