删除切片指定索引的元素(避免掉入切片坑)
0

删除切片指定索引处的元素应该是实际开发中经常遇到的功能
百度或者谷歌得到的答案经常是这样的

nums := []int{1, 2, 3, 4}
k := 2
res := append(nums[:k], nums[k+1:]...)

最后得到的答案确实是

res = [1, 2, 4]

但是,但是,但是...
请注意此时的 nums 等于 [1, 2, 4, 4],感兴趣的可以去运行下

所以,slice 真的要谨慎啊,大兄弟们
我习惯下面这种方式

nums := []int{1, 2, 3, 4}
k := 2

// res := nums[low:hight:max]
// len(res) = hight - low
// cap(res) = max - low
// 默认 max = cap(res)
res := append(nums[:k:k], nums[k+1:]...)

或者这样

nums := []int{1, 2, 3, 4}
k := 2

temp := make([]int, len(nums[:k]))
temp = copy(temp, nums[:k])
res := append(temp, nums[k+1:]...)
Go

要是有兴趣的话可以看看我写的一些算法解题思路 https://github.com/Han-MeiM/leetCode

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!