g0201_0300.s0260_single_number_iii.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0201_0300.s0260_single_number_iii;
// #Medium #Array #Bit_Manipulation #2022_07_05_Time_1_ms_(100.00%)_Space_44.5_MB_(77.86%)
/**
* 260 - Single Number III\.
*
* Medium
*
* Given an integer array `nums`, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once. You can return the answer in **any order**.
*
* You must write an algorithm that runs in linear runtime complexity and uses only constant extra space.
*
* **Example 1:**
*
* **Input:** nums = [1,2,1,3,2,5]
*
* **Output:** [3,5] **Explanation: ** [5, 3] is also a valid answer.
*
* **Example 2:**
*
* **Input:** nums = [-1,0]
*
* **Output:** [-1,0]
*
* **Example 3:**
*
* **Input:** nums = [0,1]
*
* **Output:** [1,0]
*
* **Constraints:**
*
* * 2 <= nums.length <= 3 * 104
* * -231 <= nums[i] <= 231 - 1
* * Each integer in `nums` will appear twice, only two integers will appear once.
**/
public class Solution {
public int[] singleNumber(int[] nums) {
int xorSum = 0;
for (int num : nums) {
// will give xor of required nos
xorSum ^= num;
}
// find rightmost bit which is set
int rightBit = xorSum & -xorSum;
int a = 0;
for (int num : nums) {
// xor only those number whose rightmost bit is set
if ((num & rightBit) != 0) {
a ^= num;
}
}
return new int[] {a, a ^ xorSum};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy