《算法二分查找进阶:旋转数组的查找问题》(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

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 18:46
淘天集团 java n * 16 + 2 * 12 + 1w 硕士985
也许是天气_:白菜的话别去淘天,还是红薯吧。不过红薯没给你期权吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务