2026/04/27

[LeetCode] 33 Search in Rotated Sorted Array

世界最難二分搜XD

為什麼又變成小於等於了

使用「小於」跟「小於等於」的時機差別是甚麼?

回傳mid跟回傳low/high的時機差別又是甚麼?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
  int search(vector<int>& nums, int target) {
    int low = 0;
    int high = nums.size() - 1;
    while (low <= high) {
      int mid = (low + high) / 2;
      if(nums[mid] == target)
        return mid;
      
      if (nums[mid] >= nums[low]) 
        if (nums[low] <= target && target <= nums[mid]) 
          high = mid - 1;
        else
          low = mid + 1;
      else 
        if (nums[mid] <= target && target <= nums[high]) 
          low = mid + 1;
        else
          high = mid - 1;
    }
    return -1;
  }
};