Commit 50047d3

mo <mokha@cisco.com>
2017-06-16 03:43:42
dp solution to range sum.
1 parent d7fe97b
Changed files (1)
spec/sum_in_range_spec.rb
@@ -45,6 +45,23 @@ describe "sum_in_range" do
     end % MODULO
   end
 
+  def sum_in_range(numbers, queries)
+    dp = []
+    0.upto(numbers.size - 1) do |n|
+      if n == 0
+        dp[n] = numbers[n]
+      else
+        dp[n] = dp[n - 1] + numbers[n]
+      end
+    end
+
+    sum = 0
+    queries.each do |(x, y)|
+      sum += (x > 0) ? dp[y] - dp[x - 1] : dp[y]
+    end
+    sum % MODULO
+  end
+
   [
     { nums: [3, 0, -2, 6, -3, 2], queries: [[0,2], [2,5], [0,5]], x: 10 },
     { nums: [-1000], queries: [[0,0]], x: 999999007 },