/** * @param {number[]} nums * @return {number} */ var singleNonDuplicate = function (nums) { let start = 0; let end = nums.length - 1; while (start < end) { const mid = Math.floor((start + end) / 2); const isEvenlyDivided = !(mid % 2); if (nums[mid] !== nums[mid + 1] && nums[mid] !== nums[mid - 1]) { return nums[mid]; } (isEvenlyDivided && nums[mid] === nums[mid - 1]) || (!isEvenlyDivided && nums[mid] === nums[mid + 1]) ? (end = mid - 1) : (start = mid + 1); } return nums[start]; };