Search in Rotated Sorted Array

来源:互联网 发布:centos7 打开端口 编辑:程序博客网 时间:2024/05/22 10:30

Suppose a sorted array 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.

O(n)也能ac..

class Solution {public:    int search(vector<int>& nums, int target)     {        if (nums.size() == 0)           return 0;        int i = 0;        for (; i < nums.size(); i++)        {            if (nums[i] == target)              return i;        }        return -1;    }};

不过这题考的是二分查找,看大神代码学习

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