《算法二分查找进阶:旋转数组的查找问题》(652)
# 🔍 算法二分查找进阶:旋转数组的查找问题
二分查找(Binary Search)是算法中的经典问题,但当遇到**旋转数组**时,常规的二分查找就需要一些巧妙的变通。旋转数组是指一个有序数组在某个未知点被旋转过,例如 `[4,5,6,7,0,1,2]` 是由 `[0,1,2,3,4,5,6,7]` 旋转得到的。如何在这样的数组中高效查找目标值?🤔
## 🔄 旋转数组的特点
旋转数组虽然整体无序,但**局部仍然有序**。我们可以利用这一特性,在二分查找时额外判断哪一部分是有序的:
1. **比较 `nums[mid]` 和 `nums[left]`**,确定左半部分是否有序。
2. **如果左半有序**,检查目标值是否在 `[left, mid]` 范围内,如果是则缩小右边界,否则调整左边界。
3. **如果右半有序**,同理检查目标值是否在 `[mid, right]` 范围内。
## 💡 代码示例(Python)
```python
def search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
# 左半部分有序
if nums[left] <= nums[mid]:
if nums[left] <= target < nums[mid]:
right = mid - 1
else:
left = mid + 1
# 右半部分有序
else:
if nums[mid] < target <= nums[right]:
left = mid + 1
else:
right = mid - 1
return -1
```
## 🚀 优化与变种
- **重复元素处理**:如果数组有重复值(如 `[1,1,1,0,1]`),可能需要额外判断 `nums[left] == nums[mid]` 的情况。
- **找旋转点**:类似思路可用于寻找旋转数组的最小值(如 `[3,4,5,1,2]` 中的 `1`)。
掌握旋转数组的二分查找,能让你在面试和实际编程中更灵活地应对变种问题!🎯 快去练习吧!
5G.okatady081.asia/PoSt/1125_320928.HtM
5G.okatady080.asia/PoSt/1125_325514.HtM
5G.okatady079.asia/PoSt/1125_952449.HtM
5G.okatady078.asia/PoSt/1125_026319.HtM
5G.okatady077.asia/PoSt/1125_412952.HtM
5G.okatady076.asia/PoSt/1125_293821.HtM
5G.okatady075.asia/PoSt/1125_952480.HtM
5G.okatady074.asia/PoSt/1125_211203.HtM
5G.okatady073.asia/PoSt/1125_302495.HtM
5G.okatady072.asia/PoSt/1125_474200.HtM
5G.okatady081.asia/PoSt/1125_817965.HtM
5G.okatady080.asia/PoSt/1125_319815.HtM
5G.okatady079.asia/PoSt/1125_215728.HtM
5G.okatady078.asia/PoSt/1125_998425.HtM
5G.okatady077.asia/PoSt/1125_909407.HtM
5G.okatady076.asia/PoSt/1125_327232.HtM
5G.okatady075.asia/PoSt/1125_641756.HtM
5G.okatady074.asia/PoSt/1125_095279.HtM
5G.okatady073.asia/PoSt/1125_769078.HtM
5G.okatady072.asia/PoSt/1125_600215.HtM
5G.okatady081.asia/PoSt/1125_469691.HtM
5G.okatady080.asia/PoSt/1125_379519.HtM
5G.okatady079.asia/PoSt/1125_160638.HtM
5G.okatady078.asia/PoSt/1125_742859.HtM
5G.okatady077.asia/PoSt/1125_285371.HtM
5G.okatady076.asia/PoSt/1125_976000.HtM
5G.okatady075.asia/PoSt/1125_846109.HtM
5G.okatady074.asia/PoSt/1125_813916.HtM
5G.okatady073.asia/PoSt/1125_889812.HtM
5G.okatady072.asia/PoSt/1125_617456.HtM
5G.okatady081.asia/PoSt/1125_550969.HtM
5G.okatady080.asia/PoSt/1125_723769.HtM
5G.okatady079.asia/PoSt/1125_845297.HtM
5G.okatady078.asia/PoSt/1125_785709.HtM
5G.okatady077.asia/PoSt/1125_017096.HtM
5G.okatady076.asia/PoSt/1125_207677.HtM
5G.okatady075.asia/PoSt/1125_004362.HtM
5G.okatady074.asia/PoSt/1125_333776.HtM
5G.okatady073.asia/PoSt/1125_551485.HtM
5G.okatady072.asia/PoSt/1125_918388.HtM
5G.okatady081.asia/PoSt/1125_868786.HtM
5G.okatady080.asia/PoSt/1125_684295.HtM
5G.okatady079.asia/PoSt/1125_870915.HtM
5G.okatady078.asia/PoSt/1125_060957.HtM
5G.okatady077.asia/PoSt/1125_518823.HtM
5G.okatady076.asia/PoSt/1125_812315.HtM
5G.okatady075.asia/PoSt/1125_996795.HtM
5G.okatady074.asia/PoSt/1125_957583.HtM
5G.okatady073.asia/PoSt/1125_774984.HtM
5G.okatady072.asia/PoSt/1125_669191.HtM
5G.okatady081.asia/PoSt/1125_369477.HtM
5G.okatady080.asia/PoSt/1125_693449.HtM
5G.okatady079.asia/PoSt/1125_248367.HtM
5G.okatady078.asia/PoSt/1125_747040.HtM
5G.okatady077.asia/PoSt/1125_397697.HtM
5G.okatady076.asia/PoSt/1125_436199.HtM
5G.okatady075.asia/PoSt/1125_149955.HtM
5G.okatady074.asia/PoSt/1125_649894.HtM
5G.okatady073.asia/PoSt/1125_693600.HtM
5G.okatady072.asia/PoSt/1125_633381.HtM
5G.okatady081.asia/PoSt/1125_844813.HtM
5G.okatady080.asia/PoSt/1125_923175.HtM
5G.okatady079.asia/PoSt/1125_888592.HtM
5G.okatady078.asia/PoSt/1125_104837.HtM
5G.okatady077.asia/PoSt/1125_996887.HtM
5G.okatady076.asia/PoSt/1125_174706.HtM
5G.okatady075.asia/PoSt/1125_027767.HtM
5G.okatady074.asia/PoSt/1125_213901.HtM
5G.okatady073.asia/PoSt/1125_764197.HtM
5G.okatady072.asia/PoSt/1125_682331.HtM
5G.okatady081.asia/PoSt/1125_078635.HtM
5G.okatady080.asia/PoSt/1125_828585.HtM
5G.okatady079.asia/PoSt/1125_404960.HtM
5G.okatady078.asia/PoSt/1125_818254.HtM
5G.okatady077.asia/PoSt/1125_175011.HtM
5G.okatady076.asia/PoSt/1125_125846.HtM
5G.okatady075.asia/PoSt/1125_778468.HtM
5G.okatady074.asia/PoSt/1125_141390.HtM
5G.okatady073.asia/PoSt/1125_952358.HtM
5G.okatady072.asia/PoSt/1125_283514.HtM