Golang实现
用Go实现
首先遍历一遍数组,找出小于0或者大于n-1的数,返回-1
然后遍历一遍数组,将每个出现的数字加入map中,但是首先判断map中是否存在这个数,如果存在则返回这个数,不存在加入map中,没有满足的数则返回-1
样例
hash := make(map[int]int) //创建一个map
for _, value := range nums { //第一次遍历数组找出小于0或者大于n-1的数,如果存在返回-1
if value<0 ||value>=len(nums) {
return -1
}
}
for _, value := range nums { //第二次遍历数组
if _,ok := hash[value] ;ok{ //如果在map中,直接返回该数字,只需要判断是否存在即可,不需要关心value值
return value
}else {
hash[value]++ //加入map中,value值不重要,默认为1
}
}
return -1 //没有重复数字直接返回-1
算法分析
时间两次遍历数组,时间复杂度为n