mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-16 23:16:26 +00:00
feat(islands): add StudyDeck component and markdown decks for algorithms
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
## 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
|
||||
Reference in New Issue
Block a user