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

57 lines
1.2 KiB
Markdown
Raw Normal View History

## 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
```js
// 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