# Leetcode Single-Number #### 2022-07-22 15:31 > ##### Algorithms: > > #algorithm #bit_manipulation > > ##### Data structures: > > #DS #bitset > > ##### Difficulty: > > #coding_problem #difficulty_easy > > ##### Additional tags: > > #leetcode > > ##### Revisions: > > N/A ##### Related topics: ##### Links: - [Link to problem](https://leetcode.com/problems/single-number/) - [Learn about XOR](https://en.wikipedia.org/wiki/Exclusive_or#Computer_science) - [Explanation](https://leetcode.com/problems/single-number/discuss/1772139/C%2B%2Bor-Explained-Everything-w-WHY-XOR-WORKSor-BRUTE-FORCE-TO-OPTIMIZEDor-STEP-BY-STEP-DRY-RUN) --- ### Problem Given a **non-empty** array of integers `nums`, every element appears _twice_ except for one. Find that single one. You must implement a solution with a linear runtime complexity and use only constant extra space. #### Examples **Example 1:** **Input:** nums = [2,2,1] **Output:** 1 **Example 2:** **Input:** nums = [4,1,2,1,2] **Output:** 4 **Example 3:** **Input:** nums = [1] **Output:** 1 #### Constraints - `1 <= nums.length <= 3 * 104` - `-3 * 104 <= nums[i] <= 3 * 104` - Each element in the array appears twice except for one element which appears only once. ### Thoughts > [!summary] > This is a #bit_manipulation problem utilizing the XOR operator The XOR operator has some properties: ``` a ^ a = 0; a ^ b ^ a = a ^ a ^ b = b; ``` This can be used for our problem. ### Solution ```cpp class Solution { public: int singleNumber(vector &nums) { // Using XOR operator int ans = 0; for (int i : nums) { ans ^= i; } return ans; } }; ```