LeetCode #645 错误的集合
基本思路
用一个vector来模拟哈希表,记录每个元素的数量从而来找到重复的数和缺失的数。
标程
1 class Solution { 2 public: 3 vector<int> findErrorNums(vector<int>& nums) { 4 int n = nums.size(); 5 vector<int>hash(n+1); // 模拟一个哈希map 6 int a,b; 7 for(int i = 0; i < n; i++){ 8 hash[nums[i]]++; //记录集合s中各个元素的数量 9 } 10 for(int i = 1; i <= n; i++){ //从1遍历到n 11 if(hash[i] == 2){ //数量为2的即为重复的数字 12 a = i; 13 } 14 if(hash[i] == 0){ //数量为0的即为缺失的数字 15 b = i; 16 } 17 } 18 return {a,b}; 19 } 20 };
时间复杂度
O(N)