mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
add explanation for go slice
This commit is contained in:
@ -226,7 +226,13 @@ Python:
|
||||
|
||||
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)哦。
|
||||
|
||||
|
||||
-----------------------
|
||||
|
@ -171,6 +171,14 @@ Python:
|
||||
|
||||
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