Walk the array once, storing seen values in a lookup table. When the complement is already present, the result indices are known.

Algorithm

Basic Implementation

basic.sql
.mode list
.headers off
CREATE TABLE arr(idx INTEGER PRIMARY KEY, val INTEGER);
INSERT INTO arr(idx, val) VALUES
  (0, 2), (1, 7), (2, 11), (3, 4), (4, 5);
SELECT '[' || a.idx || ', ' || b.idx || ']'
FROM arr AS a
JOIN arr AS b ON a.idx < b.idx
WHERE a.val + b.val = 9
ORDER BY b.idx, a.idx
LIMIT 1;

Complexity

  • Time: O(n) average
  • Space: O(n)

Implementation notes

  • Keep the explicit control flow. Library shortcuts would hide the state changes this lesson is meant to replay.
  • The final output is intentionally small and deterministic for cross-language comparison.
execution replay The checked-in replay follows the language-neutral state table for `array-two-sum-hash`.
cross-language comparison This SQL DSA version keeps the same data and final output as every other DSA book in this wave.