Example #1
0
    public int CountRangeSum(int[] nums, int lower, int upper)
    {
        int cnt = 0;

        if (nums.Length > 0)
        {
            MultiSet rSet = new MultiSet();
            rSet.Add(0);
            long sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                sum += (long)nums[i];
                cnt += rSet.Distance(sum - (long)upper, sum - (long)lower);
                rSet.Add(sum);
            }
        }
        return(cnt);
    }