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];
    }
}

 

posted @ 2019-09-24 21:29  星辰大海。  阅读(279)  评论(0编辑  收藏  举报