从包含重复数字的数组中找出单个不重复项

in with 0 comment

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

Programmer

class Solution {
    public int singleNumber(int[] nums) {
        
        Set<Integer> s = new HashSet<Integer>();
        
        for (int i : nums) {
            if(!s.add(i)){
                s.remove(i);
            }
        }
        
        return s.iterator().next();
    }
}

Idea