Amortized Analysis
Appending to a dynamic array is amortized O(1) because most insertions require only one write, while the occasional resize costs O(n). With geometric growth, the total cost of all resizes over many insertions is linear, so the average cost per insertion remains constant.
An individual resize can be O(n).
Resizing happens only occasionally when capacity is exhausted.
Geometric growth prevents resizing on every insertion.
Across n insertions, total copying work is O(n).
Therefore, append is amortized O(1), although its worst-case individual operation can be O(n).