第一个仅出现一次的数组元素

来源:互联网 发布:windows任务计划程序 编辑:程序博客网 时间:2024/06/16 00:30

给定一个整型数组,请写一个算法,找到第一个仅出现一次的数组元素,复杂度为O(n)


输入样例:

1,1,2,2,3,3,4,4,5,6,6,8,9,9

输出:

5

可以使用dictionary来做,遍历数组,把元素值作为key,元素出现次数作为value,其中key是一个array

代码如下:

int findNum(vector<int> a) {    map<int,int> m;    vector<int> key;    for(int i = 0; i < a.size(); ++i){        if(m.count(a[i])){        //如果m中存在该key(元素址),则把key相应的value加1。            m[a[i]] += 1;        }else{        //若m中不存在该key,则加进来。然后设置value为1。            key.push_back(a[i]);            m[a[i]] = 1;        }    }    //遍历,找到第一个value为1的key值,函数返回。    for(int i = 0; i < key.size(); ++i){        if(m[key[i]] == 1){            return key[i];        }    }    return 0;}
0 0