不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

Leetcode-287-find-the-duplicate-number | 寻找重复数

题目

find-the-duplicate-number

解法一

  • 建立一个key为int,value为int的map;
  • 第一遍for range循环遍历nums数组,将nums数组里的元素出现的次数记录进map中;
  • 第二遍for range循环遍历map,将value不为1的num取出返回,即为重复数。

这个解法需要用两次for循环,效率不高,下面我考虑用第二种解法。

解法二

  • 建立一个key为int,value为bool类型的map;
  • 一遍for range循环遍历nums数组,如果这个num第一次出现,就将其value置为true,否则直接返回这个num,因为value为true代表这个num已经出现过一次了,第二次再遍历到它时,即为重复数。

go代码

1
2
3
4
5
6
7
8
9
10
11
12
func findDuplicate(nums []int) int {
var numsmap = make(map[int]bool)
for _,num := range nums {
if !numsmap[num] {
//只出现一次
numsmap[num] = true
} else {
return num
}
}
return -1
}
------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!