// Time Complexity: O(log n)
// Space Complexity: O(1)

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNonDuplicate = function (nums) {
    let left = 0,
        right = nums.length - 2;

    while (left <= right) {
        const mid1 = (left + right) >> 1;
        const mid2 = mid1 ^ 1;

        if (nums[mid1] === nums[mid2]) left = mid1 + 1;
        else right = mid1 - 1;
    }

    return nums[left];
};