Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1] Output: 1
Example 2:
Input: [4,1,2,1,2] Output: 4
func singleNumber(nums []int) int {
var n int
m:=make(map[int]int)
for _, v:= range nums{
_, ok:= m[v]
if ok {
delete(m,v)
}else{
m[v]= 0
}
}
for key,_:=range m {
n = key
}
return n
}
Solution2 (16ms)
func singleNumber(nums []int) int {
if len(nums) == 0 {
panic("no singleNumber")
}
result := 0
for _, v := range nums {
result ^= v
}
return result
}