题目链接:https://leetcode.cn/problems/find-the-duplicate-number/description/
题目大意:给出一个数组长n+1
,其中所有数字都在[1, n]
范围内。数组中有且仅有一个数会出现重复次,找到这个数。
思路:用一个布尔数组known[]
来表示某个数字是否被访问过,若未访问则标记为访问过,若访问过说明要找的就是这个数。
完整代码
class Solution {
public:
int findDuplicate(vector<int>& nums) {
int N = nums.size()-1;
int ret = 0;
bool *known = new bool[N+1]();
for (int i = 0; i < nums.size(); i++) {
if (!known[nums[i]])
known[nums[i]] = true;
else {
ret = nums[i];
break;
}
}
delete [] known;
return ret;
}
};