class Solution { public int singleNonDuplicate(int[] nums) { // if(nums.length == 1) return nums[0]; // int count = 1; // for(int i = 1; i < nums.length;i++){ // if(nums[i] != nums[i-1]) { // count++; // if(count == 2) return nums[i-1]; // }else{ // count--; // } // } // return nums[nums.length-1]; //二分法 int len = nums.length-1; int l = 0,h = len; while(l < h){ int m = (l + h)/2; if(m % 2 == 1) m--; if(nums[m] == nums[m+1]){ //前半部分成对出现,在后半部分 l = m + 2; }else{ //已不成对,在前半部分 h = m; } } return nums[l]; } }
力扣540. 有序数组中的单一元素
猜你喜欢
转载自www.cnblogs.com/come-on-pxw/p/12783627.html
今日推荐
周排行