mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
add explanation for go slice
This commit is contained in:
@ -226,13 +226,7 @@ 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)哦。
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Reference in New Issue
Block a user