题目描述
题目链接
代码
public int singleNonDuplicate(int[] nums) {int left = 0;int right = nums.length - 1;while (left <= right) {int mid = (left + right) >> 1;int midVal = nums[mid];//mid是奇数时//midVal==nums[mid-1]--->单数在左边//midVal==nums[mid+1]--->单数在右边if ((mid + 1) % 2 != 0) {if (mid - 1 >= 0 && midVal == nums[mid - 1]) {right = mid - 1;} else if (mid + 1 <= right && midVal == nums[mid + 1]) {left = mid + 1;} else {return midVal;}} else {if (mid - 1 >= 0 && midVal == nums[mid - 1]) {left = mid + 1;} else if (mid + 1 <= right && midVal == nums[mid + 1]) {right = mid - 1;} else {return midVal;}}}return 0;}