for-loop - 为什么这里用if会出错,在golang中,remove-duplicates-from-sorted-array
问题描述
我是初学者,希望能得到你的帮助
它是从排序数组中删除重复项
func remove(nums []int)int{ i,j:= 0,0 //Why is it wrong to use if here? // if j< len(nums) for j < len(nums){ if i==0 || nums[i-1]!= nums[j]{ nums[i] = nums[j] i++ j++ }else{ j++ } } return i
}
func main(){ nums := []int{1,2,2,3,5,5} result := remove(nums) fmt.Println(result) }
请帮我
解决方案
它是一个排序的数字列表,因此您可以存储最后添加到结果列表中的数字,如果下一个数字相同,则跳过添加到结果列表中。
func remove(nums []int) []int {
if len(nums) == 0 {
return []int{}
}
result := []int{nums[0]}
current := nums[0]
for _, num := range nums {
if current == num {
continue
}
result = append(num)
current = num
}
return result
}
如果您问为什么使用 是错误的for j < len(nums)
,那并没有错,但是使用for _, num := range nums
会使您的生活更轻松,因为您不必跟踪您在数组中的位置。
推荐阅读
- python - python线程,在移动到下一行之前确认响应
- r - 按R中的位置匹配两个字符串
- python - 黑帽 Python TCP 客户端
- mysql - MYSQL JSON 选择查询每次运行时返回不同的结果
- c++ - GLM 中 SparseMatrix 的等效特征是什么?
- .net - Visual Studio NuGet:为什么不执行依赖包的 .targets 文件?
- delphi - 在 Delphi 中加速浮动动画
- azure - 如何在 Azure Devops/VSTS 中的任务之间传递变量
- java - Java - 从链接列表中删除项目
- javascript - 无法更新 mongoDb 本机 findOneAndUpdate 查询上的数据值