难度:简单 。
标签:位运算,数组,哈希表,排序。
排序后直接遍历数组查找。
正确解法:
class Solution {
public:
vector<int> findErrorNums(vector<int>& nums) {
int n = nums.size();
sort(nums.begin(), nums.end());
vector<int> ans(2);
int lostFlag = 0, errorFlag = 0;
if(nums[0] != 1){
lostFlag = 1;
ans[1] = 1;
}
for(int i = 1; i < n; ++i){
if(nums[i] == nums[i - 1]){
ans[0] = nums[i];
errorFlag = 1;
if(lostFlag)break;
}
else if(lostFlag == 0 && nums[i] != nums[i - 1] + 1){
ans[1] = nums[i] - 1;
lostFlag = 1;
if(errorFlag)break;
}
}
if(lostFlag == 0)ans[1] = n;
return ans;
}
};
结果: