原题为:
题解为:
class Solution:def firstBadVersion(self, n):# 定义左右边界,因为是版本是一个个体,所以从1开始l,r = 1,n# 当左边界小于右边界循环while (l
200道大数据面试常考算法题 (二分查找篇)540-有序数组中的单一元素
原题为:
题解为:
class Solution:def singleNonDuplicate(self, nums: List[int]) -> int:l,r = 0,len(nums)-1while(l < r):mid = (l+r) // 2# 右侧数组为偶数halvesAreEven = (l - mid) % 2 == 0# 假如中值和中值后面的数是一对时if(nums[mid] == nums[mid + 1]):# 否则右侧数组为偶数,说明单一数字在右侧,重新开始让区间左边界变为从中值+2开始# 因为中值右侧有一个跟中间相同,所以不能右侧此时不能是偶数if(halvesAreEven):l = mid + 2# 否则左侧数组为偶数,说明单一数字在右侧,重新开始让区间左边界变为从中值+2开始else:r = mid - 1# 假如中值和中值前面的数是一对时elif(nums[mid] == nums[mid - 1]):# 假如右侧数组为偶数,说明单一数字在左侧,重新开始让区间右边界变为从中值-2开始if(halvesAreEven):r = mid -2# 否则左侧数组为偶数,说明单一数字在右侧,重新开始让区间左边界变为从中值+1开始else:l = mid + 1# 否则中值就是单一数字else:return nums[mid]# 当左右边界相同时,即找到单一数字return nums[l]
好啦,这期的分享到这里结束啦!我们下期(位运算篇)再见!
- 数组+链表+红黑树 HashMap底层数据结构
- Python从Oracle数据库中获取数据——fetchall
- 哪种数据仓库架构最成功?
- dbo与db_owner区别
- 【云原生】-Docker快速部署国产达梦数据库
- 数据结构系列--循环链表
- 数据结构系列--栈与递归
- 全球200多个国家PM2.5暴露浓度面板数据
- 【Express.js】处理请求数据
- 数据结构系列--栈的实践