Arrays and Iteration
Two-Sum with Hash Lookup
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.R
arr <- c(2, 7, 11, 4, 5)
target <- 9
seen <- new.env(hash = TRUE, parent = emptyenv())
first <- -1
second <- -1
i <- 1
while (i <= length(arr)) {
value <- arr[i]
need <- target - value
key <- as.character(need)
if (exists(key, envir = seen, inherits = FALSE)) {
first <- get(key, envir = seen)
second <- i - 1
break
}
assign(as.character(value), i - 1, envir = seen)
i <- i + 1
}
cat("[", first, ", ", second, "]\n", sep = "")
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 R DSA version keeps the same data and final output as every other DSA book in this wave.