Files
leetcode/islands/decks/arrays-and-strings.md
T

1.2 KiB

Arrays & Strings

Ordered collections. Arrays are mutable, strings are immutable — every "edit" to a string builds a new one.


Cost model

Operation Array String
Append / pop at end O(1)* O(n)
Insert / delete in middle O(n) O(n)
Random access O(1) O(1)
Membership check O(n) O(n)

*amortized — occasional resize, constant on average.


Recognition

  • Contiguous data + index arithmetic → array patterns apply
  • Building a string piece by piece → collect parts, join once
  • "In-place" requirement → think swap / overwrite, not rebuild

String building

// O(n^2): each += copies the whole string
let s = "";
for (const ch of parts) s += ch;

// O(n): buffer then join
const buf = [];
for (const ch of parts) buf.push(ch);
const out = buf.join("");

Recall

  • Why is append amortized O(1) and not plain O(1)?
  • What does immutability cost when you "modify" one character?
  • Which patterns sit on top of arrays? (two pointers, sliding window, prefix sum)

Drill

  • 1480 Running Sum of 1d Array
  • 217 Contains Duplicate
  • 189 Rotate Array
  • 977 Squares of a Sorted Array