# Array - Interview Cake
04/01/2022 (Tuesday)
| - | Worst Case | - |
| -------- | -------- | -------- |
| space | O(n) | - |
| lookup | O(1) | - |
| append | O(1) | - |
| insert | O(n) | - |
| delete | O(n) | - |
## In-place Algorithm
* Destructive algorithm
* The original input is destroyed (or modified) during the function call.
* Without creating a new copy of the input
* Only create additional variables that are O(1) space
### Out-of-place
* Doesn’t make any changes that are visible to other functions.
* Those functions copy any data structures or objects before manipulating and changing them.
Working in-place is a good way to save time and space.
But, out-of-place algorithms are considered safer because they avoid side effects.
## Dynamic Array
* An array with automatic resizing
| | Average Case | Worst Case |
| -------- | -------- | -------- |
| space | O(n) | O(n) |
| lookup | O(1) | O(1) |
| append | O(1) | O(n) |
| insert | O(n) | O(n) |
| delete | O(n) | O(n) |
### Strengths
* Fast lookups
* Variable size
* Cache-friendly
### Weaknesses
* Slow worst-case appends
* Costly inserts and deletes
`We’d say the dynamic array’s size is 4 and its capacity is 10.`
### Doubling Appends
* Costs O(n) time!