leetcode 540.有序数组中的单一元素(Java 二分查找 medium)
https://leetcode-cn.com/problems/single-element-in-a-sorted-array/submissions/
判断条件l<h,因为是判断单一元素,所以只需判断位于偶数位置的数字和下一个数字是否相等,来确定l和h的选择,要注意mid变量要一直为偶数。
class Solution { public int singleNonDuplicate(int[] nums) { int l=0,h=nums.length-1; while(l<h){ int mid=l+(h-l)/2; if(mid%2!=0){ mid--; } if(nums[mid]==nums[mid+1]){ l=mid+2; } else{ h=mid; } } return nums[l]; } }