# 136. Single Number

## 題目原文

Given a **non-empty** array of integers, every element appears *twice* except for one. Find that single one.

**Note:**

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

**Example 1:**

```
Input: [2,2,1]
Output: 1
```

**Example 2:**

```
Input: [4,1,2,1,2]
Output: 4
```

## **解題思路**

{% hint style="info" %}

1. 把nums掃過一遍，把第一次看到的數字放到map裡。
2. 如果再一次遇到的數字，再把它刪除掉，最後看剩下哪個數字就是答案。
   {% endhint %}

## 程式解答

```cpp
class Solution 
{
public:
    int singleNumber(vector<int>& nums) 
    {
        std::map<int, int> p;
        
        for (auto i : nums)
        {
            if (p[i] == 0)
                p[i]++;
            else
                p[i]--;
        }
        for (auto i : nums)
            if (p[i])
                return i;
    }
};
```
