问题描述
简要思路
第一反应是直接嵌套for循环就出来了。但是为了控制时间复杂度,使用两个单独的for循环,将时间复杂度由O(n2)降至O(n) 。
实现使用一个数组存储nums中每一个数字出现的次数,然后遍历a数组,只要找到一个出现次数大于1的,就将该数字输出。
代码
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
int n = nums.size();
vector<int> a(n,0);
for(int i=0; i<n; i++){
a[nums[i]] ++;
}
for(int i=0; i<n; i++){
if(a[i] > 1) return i;
}
return -1;
}
};