Algorithms: How Prefix Sums Can Help Improving Operations Over Arrays

Algorithms: How Prefix Sums Can Help Improving Operations Over Arrays,

 

gains = [102, 55, 320, 250, 215, 142, 54, 32, 121, 224, 458, 276]
queries = [
0..11, # whole year
0..1, # first 2 months
9..11 # last quarter
]

First Approach (worse): O(N * M)

gains   = [102, 55, 320, 250, 215, 142, 54, 32, 121, 224, 458, 276]
queries = [0..11, 0..1, 9..11]
queries.map do |query|
gains[query].reduce(:+)
end
# Result: [2249, 157, 958]

Second Approach (better): O(N + M)

gains   = [102, 55, 320, 250, 215, 142, 54, 32, 121, 224, 458, 276]
queries = [0..11, 0..1, 9..11]
sums = [0]
# 1. Prefix sum calculation:
(1..gains.length).each do |i|
sums[i] = sums[i - 1] + gains[i - 1]
end
# 2. Query resolution:
queries.map do |query|
sums[query.end + 1] - sums[query.begin]
end
# Result: [2249, 157, 958]

Was looking for a list of prefix sum problems to practice with and couldn't find a curated list. Here is one:

https://leetcode.com/problems/maximum-sum-of-3-non-overlapping-subarrays/
https://leetcode.com/problems/continuous-subarray-sum/
https://leetcode.com/problems/subarray-sum-equals-k/
https://leetcode.com/problems/maximum-size-subarray-sum-equals-k/
https://leetcode.com/problems/number-of-submatrices-that-sum-to-target/
https://leetcode.com/problems/max-sum-of-rectangle-no-larger-than-k/
https://leetcode.com/problems/binary-subarrays-with-sum/
https://leetcode.com/problems/path-sum-iii/
https://leetcode.com/problems/subarray-sums-divisible-by-k/
https://leetcode.com/problems/range-sum-query-2d-immutable/
https://leetcode.com/problems/count-number-of-nice-subarrays/
https://leetcode.com/problems/matrix-block-sum/

Please post anything problems I missed and I will update.

Edit:

more problems on prefix sum:

  1. SPOJ CSUMQ (straight forward)
  2. Codechef SNAKEEAT (Here I wrote a tutorial how this problem can be solved using prefix sum)
    Edit:
  3. UVa 108
  4. UVa 983
  5. UVa 11951
    Edit 2:
  6. UVa 10533 (I have learnt the prefix sum technique by myself solving this problem)
  7. Hackerrank KJ and street light

 

Conclusion

Men' fashion , Dating Tips , Relationship Advice

Post a Comment