-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathLeetcode 442. Find All Duplicates in an Array.go
69 lines (67 loc) · 1.55 KB
/
Leetcode 442. Find All Duplicates in an Array.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
func findDuplicates(nums []int) []int {
output := []int{}
for _, num := range nums {
idx := abs(num)
if nums[idx-1] < 0 {
output = append(output, idx)
} else {
nums[idx-1] *= -1
}
}
return output
}
func abs(num int) int {
if num < 0 {
return -num
}
return num
}
func findDuplicates(nums []int) []int {
size := len(nums)
// idxArr := make([]int, size)
output := []int{}
// for _, num := range nums {
// idxArr[num-1]++
// }
// for idx, num := range idxArr {
// if num == 2 {
// output = append(output, idx+1)
// }
// }
// return output
numsMap := make(map[int]bool, size)
for _, num := range nums {
if numsMap[num] {
output = append(output, num)
}
numsMap[num] = true
}
return output
}
func findDuplicates(nums []int) []int {
size := len(nums)
idxArr := make([]int, size)
output := []int{}
for _, num := range nums {
idxArr[num-1]++
if idxArr[num-1] == 2 {
output = append(output, num)
}
}
// for idx, num := range idxArr {
// if num == 2 {
// output = append(output, idx+1)
// }
// }
return output
// size := len(nums)
// output := []int{}
// numsMap := make(map[int]bool, size)
// for _, num := range nums {
// if numsMap[num] {
// output = append(output, num)
// }
// numsMap[num] = true
// }
// return output
}