leetcode.33. 搜索旋轉排序數組(二分查找)

在這裏插入圖片描述

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int size = nums.size();
        if (size == 0) return -1;
        int left = 0, right = size - 1;
        while (left <= right) {
            int mid = (left+right)/2;
            if (target == nums[mid]) {
                return mid;
            }
            // 判斷mid是在前半有序數組,還是後半有序數組
            if (nums[mid] >= nums[left]) { // 前
                if (target >= nums[left] && target < nums[mid]) {
                    right = mid-1;
                } else {
                    left = mid+1;
                }
                continue;
            } else {
                if (target > nums[mid] && target <= nums[right]) {
                    left = mid+1;
                } else {
                    right = mid-1;
                }
                continue;
            }
        }
        return -1;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章