在数组中出现奇数次的数

在数组中出现奇数次的数


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)

}

运行也简单

你可能感兴趣的:(在数组中出现奇数次的数)