首页 > 解决方案 > 为什么这里用if会出错,在golang中,remove-duplicates-from-sorted-array

问题描述

  1. 我是初学者,希望能得到你的帮助

  2. 它是从排序数组中删除重复项

    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)
       }
    
  3. 请帮我

标签: for-loopgoif-statement

解决方案


它是一个排序的数字列表,因此您可以存储最后添加到结果列表中的数字,如果下一个数字相同,则跳过添加到结果列表中。

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会使您的生活更轻松,因为您不必跟踪您在数组中的位置。


推荐阅读