Merge pull request #1139 from ClorisMoQi/master

添加Go Slice的append操作的时间复杂度解释
This commit is contained in:
程序员Carl
2022-03-23 09:28:30 +08:00
committed by GitHub

View File

@ -171,6 +171,14 @@ Python
Go Go
Go中slice的`append`操作和C++中vector的扩容机制基本相同。
说是基本呢,其实是因为大家平时刷题和工作中遇到的数据不会特别大。
具体来说当当前slice的长度小于**1024**时,执行`append`操作新slice的capacity会变成当前的2倍而当slice长度大于等于**1024**时slice的扩容变成了每次增加当前slice长度的**1/4**。
在Go Slice的底层实现中如果capacity不够时会做一个reslice的操作底层数组也会重新被复制到另一块内存区域中所以`append`一个元素不一定是O(1), 也可能是O(n)哦。