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成神之路

版权声明:
作者:感冒的梵高
链接:https://www.techfm.club/p/20762.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>