LeetCode540分析
题目描述:
个人理解:
对于这个唯一数的下标一定为偶数,且左右两边都有偶数个数,数组长度为奇数。
所以使用二分查找能够更快速的找出唯一数。
当找到中间数(mid)时,需要判断mid和两边的数字是否相等。需要分情况进行:
* 当mid下标为奇数时,需要和前面一个数字相比较
* 当mid下标为偶数时,需要和后面一个数字相比较
判断后需要对左右两边界进行更新:
*当mid和前一个数字相等时,则缩小左边界(左边界为mid+1,因为mid左侧+1则为偶数个数)
*当mid和后一个数字不相等时,则缩小右边界(右边界为mid,因为mid右侧一定是偶数个数)
mid的奇偶性判断:
用^判断,mid的值和前后的关系,当偶数^1时,为偶数+1,当奇数^1时,为奇数-1,这样就不需要判断mid的奇偶性,直接判断mid的值即可。
相等则缩小左边为mid+1
不相等则缩小右边为mid
array[mid] == array[mid^1]
源码(仅供参考):
import java.util.Scanne
LeetCode540分析最先出现在Python成神之路。
共有 0 条评论