LeetCode题目记录-645. 错误的集合(C++代码实现)

题目链接:645. 错误的集合 - 力扣(LeetCode) (leetcode-cn.com)

题目要求:

LeetCode题目记录-645. 错误的集合(C++代码实现)_第1张图片

题目思路:

思路:见下方代码。

C++代码实现:

class Solution {
public:
    vector findErrorNums(vector& nums) {
        int n = nums.size();

        sort(nums.begin(),nums.end());
        vector res;


        for(int i = 0;i < n - 1;i ++){//得到其中重复的元素,加入到res数组中
            if(nums[i] == nums[i + 1]){
                res.push_back(nums[i]);
                break;
            }
        }


        if(nums[0] != 1) {//首先判断数组的第一个元素是不是1,不是的话直接将1加入到res数组中
            res.push_back(1);
        }else{//如果第一个元素是1,那么就是后续的元素出现了缺失,使用for循环遍历

            for(int i = 1;i < n;i++){
                if(nums[i] != nums[i - 1] + 1 && nums[i] != nums[i - 1]){//如果后一个元素不是前一个元素值 + 1,且两个元素不相同(避免重复元素的统计),那么将前一个元素的值 + 1添加到res数组中
                    res.push_back(nums[i - 1] + 1);
                    break;
                }
            }

        }

        if(nums[n - 1] != n){//如果确实元素出现在了最后一个位置,那么将该元素添加到res数组中
            res.push_back(n);
        }

        return res;
    }
};

AC截图:

LeetCode题目记录-645. 错误的集合(C++代码实现)_第2张图片

本题解仅作为个人复习查看使用,并无他用。 

你可能感兴趣的:(刷题之路,leetcode,c++,算法)