在数组中出现奇数次的数
N个数组元素,每个数组元素的出现,如果出现计数为1,如果出现2次,或者以上就显示出来
例如:给定数组为={3,5,6,6,5,7,2,2,10}
算法采用hash方法。进行计算,
首先遍历3 map的元素为<3,1>
遍历到5,map元素为<3,1><5,1>
遍历到6,map元素为<3,1><5,1><6,1>
遍历到第二6的时候,map元素为<3,1><5,1><6,0>
遍历到第二5的时候,map元素为<3,1><5,0><6,0>
依次遍历,最后出现的map元素为<3,1><5,0><6,0> <7,1><2,0><10,1>
输出的结果为:3,7,10
代码
package main
import (
"fmt"
. "github.com/isdamir/gotype"
)
func getNum(arr []int){
if arr == nil || len(arr)<1 {
return
}
data:=map[int]int{}
for _,v:=range arr{
if vv,ok:=data[v];ok{
if vv==1{
data[v]=0
}else{
data[v]=1
}
}else{
data[v]=1
}
}
for _,v:=range arr{
if data[v]==1{
fmt.Println(v)
}
}
}
func CreateNodeT(node *LNode,start int){
cur:=node
for i:=start; i<10; i+=2{
cur.Next=&LNode{}
cur.Next.Data=i
cur=cur.Next
}
}
func main() {
fmt.Println("Hash Methon")
arr:=[]int{3,5,6,6,5,7,2,2,10}
getNum(arr)
}
运行也简单