leetcode 540. 有序数组中的单一元素
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
示例1:
输入: [1,1,2,3,3,4,4,8,8]
输出: 2
示例2:
输入: [3,3,7,7,10,11,11]
输出: 10
注意:
您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。
方法:二分查找
思路:通过二分查找缩小区间查找,维持mid为奇数,保证0 ~ mid共包含偶数个元素,判断nums[mid]与nums[mid - 1]是否相等,相等则说明前半区间不包含只出现一次的数,将区间往后半区间缩,否则相反,当区间只包含一个元素时,即为结果。
运行数据:执行用时:0 ms,内存消耗:39.4 MB
1 | // LeetCode指定调用方法 |
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!

