<p>You have a set of integers <code>s</code>, which originally contains all the numbers from <code>1</code> to <code>n</code>. Unfortunately, due to some error, one of the numbers in <code>s</code> got duplicated to another number in the set, which results in <strong>repetition of one</strong> number and <strong>loss of another</strong> number.</p>

<p>You are given an integer array <code>nums</code> representing the data status of this set after the error.</p>

<p>Find the number that occurs twice and the number that is missing and return <em>them in the form of an array</em>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre><strong>Input:</strong> nums = [1,2,2,4]
<strong>Output:</strong> [2,3]
</pre><p><strong class="example">Example 2:</strong></p>
<pre><strong>Input:</strong> nums = [1,1]
<strong>Output:</strong> [1,2]
</pre>
<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>2 &lt;= nums.length &lt;= 10<sup>4</sup></code></li>
	<li><code>1 &lt;= nums[i] &lt;= 10<sup>4</sup></code></li>
</ul>

class Solution {
public:
    vector<int> findErrorNums(vector<int>& nums) {
        vector<int> returnVector;
        vector<int> numsUnique = nums;

        /* find duplicate */
        sort(numsUnique.begin(), numsUnique.end());
        returnVector.push_back(*adjacent_find(numsUnique.begin(), numsUnique.end()));

        
        /* find maximum value */
        vector<int> completeNums;
        int maxNums = *max_element(numsUnique.begin(), numsUnique.end());
        if (maxNums < nums.size())
        {
            maxNums = nums.size();
        }

        /* find missing number */
        auto itr1 = unique(numsUnique.begin(), numsUnique.end());
        numsUnique.erase(itr1, numsUnique.end());
        long long sumNums = accumulate(numsUnique.begin(), numsUnique.end(), 0);

        for (unsigned idx = 1 ; idx <= maxNums; ++idx)
        {
            completeNums.push_back(idx);
        }

        long long sumCompleteNums = accumulate(completeNums.begin(), completeNums.end(), 0);
        int missingNum = sumCompleteNums - sumNums;

        returnVector.push_back(missingNum);

        return returnVector;
    }
};

28100