找出一个数组中唯一一个出现2次的数字,不清楚是不是LeetCode上的题。本人默认是LeetCode上的题。
一个数组中有N个数字,但是只有一个数字出现了2次,其他的数字均不相同。这种问题一般应该采用hash方法实现。
让所有的数字都放到一个unordered_map中,key是数字,value是该数字出现的次数。
int main() {std::vector<int> v = {1,2,4,4,9,7};int res = 0;std::unordered_map<int, int> map;for (int i = 0; i < v.size(); i++) {map[v[i]]++;if (2 == map[v[i]]) {std::cout << "key=" << v[i] << " || value=" << map[v[i]] << std::endl;break; //因为只有一个数字出现2次,因此可以退出了}}return 0;
}