Draft:Difference array

This is an old revision of this page, as edited by Heyyo53 (talk | contribs) at 06:14, 21 May 2025 (Range Queries: Added a proof, maybe not the most substantial one but I will edit later). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.


An array that is constructed using a sequence of numbers and the differences between each element forming a new array in which . The difference array of can be denoted as [1]

Inverse Function

A difference array can be undone using a prefix sum array. Here the prefix sum array is denoted as   where   is an arbituary constant prepending the prefix sum array. Given that   is   by plugging into the prefix sum function  [1]

Uniqueness of Difference Arrays

  only has a single difference array  . If no additional inputs are given   uses the elements of   to form the difference array. The non-communativity of subtraction only allows for single way to represent a given difference array.[1]

Range Queries

A difference array can be used to update an array that is being modified using range queries in constant time.[2] Here a query   with   as the left and right indices of the array to edit and   as the value to add to the elements within  . Difference arrays exhibit a unique property where when modified with a range query only the bounds of said query are modify. So given the range   the elements of   will remain unchanged except for   which will be   more than before the query. This allows for a range query to be expressed by   and  .[3]

To obtain the final array a prefix sum can be performed on  , then when the prefix sum of   is added to   all the queries that were to being applied to   will be performed through a single iteration.[2]

Proof

The relative differences of the values that lie within the range   will remain unchanged after a range query is performed. However the elements   and   will have their relative differences change. Since each element within   is increasing by   element   will be   greater than the previous entry, similarly element   will be x less than the next entry in the array.

 

 

 

Thus the middle x cancels out showing that   has no effect on the differences of the middle values.

References

  1. ^ a b c "Prefix sum array and difference array - PEGWiki". wcipeg.com. Retrieved 2025-05-20.
  2. ^ a b Katiyar, Ishank (2021-07-30). "Understanding Difference Array: The Underrated Constant Time Range Update Algorithm (Part 1)". Medium. Retrieved 2025-05-20.{{cite web}}: CS1 maint: url-status (link)
  3. ^ Nadaf, Aman (2023-02-28). "Difference Array Technique". TeckBakers. Retrieved 2025-05-20.{{cite web}}: CS1 maint: url-status (link)