剑指 Offer II 070. 排序数组中只出现一次的数字
给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。
示例 1:
输入: nums = [1,1,2,3,3,4,4,8,8]
输出: 2
示例 2:
输入: nums = [3,3,7,7,10,11,11]
输出: 10
提示:
1 <= nums.length <= 105
0 <= nums[i] <= 105
进阶: 采用的方案可以在 O(log n) 时间复杂度和 O(1) 空间复杂度中运行吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/skFtm2
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析
方法一:
按step为2遍历,两个数不相等的话前一个数就是要找的数。时间复杂度O(n)
方法二:
利用偶数下标的二分查找,mid如果是偶数mid & 1等于0,如果是奇数mid & 1等于1。
时间复杂度O(logn)。
根据mid与mid + 1的数判断是向哪个方向二分。
题解(Java)
方法一:
class