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

解題思路

  1. 把nums掃過一遍,把第一次看到的數字放到map裡。

  2. 如果再一次遇到的數字,再把它刪除掉,最後看剩下哪個數字就是答案。

程式解答

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;
    }
};

Last updated

Was this helpful?