题解 | #数组中重复的数字#
数组中重复的数字
https://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524
解题思路
这个题很简单,利用了哈希表的性质,判断当前的元素是否在哈希表内,如果在的话,就说明该数是重复的元素,就返回该数。
复杂度
- 时间复杂度:O(n);
- 空间复杂度:O(n)。
代码
C++
// 写法一
#include <unordered_map>
class Solution {
public:
int duplicate(vector<int>& numbers) {
unordered_map<int, int> mp;
for(int i = 0; i<numbers.size(); i++)
{
if(mp.find(numbers[i]) == mp.end())
{
mp[numbers[i]]++;
}
else {
return numbers[i];
}
}
return -1;
}
};
// 写法二
class Solution {
public:
int duplicate(vector<int>& numbers) {
map<int, int> mp;
for(int i = 0; i < numbers.size(); i++)
{
if(++mp[numbers[i]] > 1)
{
return numbers[i];
}
}
return -1;
}
};
Python
class Solution:
def duplicate(self , numbers: List[int]) -> int:
hashList = {}
for i in numbers:
if i in hashList:
return i
else:
hashList[i] = 1
return -1
查看15道真题和解析