leecode540:有序数组中的单一元素(最优解)

 

给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数 

 

输入: [3,3,7,7,10,11,11]
输出: 10
输入: [1,1,2,3,3,4,4,8,8]
输出: 2
class Solution {
    public int singleNonDuplicate(int[] nums) {
        int left=0;
        int right = nums.length-1;
        int m =left+(right-left)/2;
        while(left

主要思路是使用二分法,然后根据中间指针的index来判断目标数字在前面还是后面,如果在后面那么前面的数字的长度肯定为偶数,在后面则前面的数字的长度为奇数。

这个时间复杂度 > 1 && < logn

你可能感兴趣的:(算法)