[LeetCode] 33. Search in Rotated Sorted Array

来源:互联网 发布:ubuntu不支持exfat 编辑:程序博客网 时间:2024/06/07 20:51

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

class Solution {public:    int search(vector<int>& nums, int target) {        const int n = nums.size();        int lo = 0, hi = n - 1, offset;        while (lo < hi) {            int mid = lo + (hi - lo) / 2;            if (nums[mid] > nums[hi])                lo = mid + 1;            else                hi = mid;        }        offset = lo;        lo = 0, hi = n - 1;        while (lo <= hi) {            int mid = lo + (hi - lo) / 2;            int ShftedMid = (mid + offset) % n;            if (nums[ShftedMid] == target)                return ShftedMid;            else if (nums[ShftedMid] > target)                hi = mid - 1;            else                lo = mid + 1;        }        return -1;       }};

这里写图片描述这里写图片描述

原创粉丝点击