剑指offer leetcode 数组中的重复数字

func findRepeatNumber(nums []intint {
    n:= len(nums)
    for i :=0;i< n; i++{
        for  i != nums[i]  { //交换之后的新数还是从这开始,继续判断这个数是否需要交换,直到这个num[i]正确
            if (nums[i] == nums[nums[i]]){     //非第一次出现
                return nums[i]
            }else {                            //第一次出现
                 x := nums[i]
                 nums[i] = nums[x]
                nums[x] = x
            }
        }
    }
    return 0
}

 

 

//没搞明白这个原地置换的原理

用map或者排序做吧。

 

func findRepeatNumber(nums []int) int { var mapV = make(map[int]int) for i := 0; i <len(nums); i++ {
      _, ok :=mapV[nums[i]] if ok{ return nums[i]
      }else{
         mapV[nums[i]] = i
      }
   } return -1 }

 

 
发表评论 / Comment

用心评论~