>540. 有序数组中的单一元素<
>singleNonDuplicate<
一、解题思路
1、解法一( Java )
解法思路:异或配对 + 二分查找
通过 位运算
中的 mid ^ 1
异或
运算符来统一奇偶时的情况
- i 为偶数时:
i ^ 1 == i + 1
,结果为原来的偶数加一后的奇数 - i 为奇数时:
i ^ 1 == i - 1
,结果为原来的奇数减一后的偶数
/**
* @author listen1024
* @date 2022-2-14
* 540. 有序数组中的单一元素
*/
class Solution {
public int singleNonDuplicate(int[] nums) {
int low = 0;
int high = nums.length - 1;
while (low < high) {
int mid = (low + high) /2;
if (nums[mid] == nums[mid ^ 1]){
low = mid + 1;
} else {
high = mid;
}
}
return nums[low];
}
}
运行结果截图如下: