[leetcode-81]Search in Rotated Sorted Array II(C)

来源:互联网 发布:release 优化 编辑:程序博客网 时间:2024/06/03 16:55

问题描述:
Follow up for “Search in Rotated Sorted Array”:
What if duplicates are allowed?

Would this affect the run-time complexity? How and why?

Write a function to determine if a given target is in the array.

分析:
根据这道题的特点,需要找到转折点,其条件是nums[i+1]

bool search(int* nums, int numsSize, int target) {    int i;    for(i = 0;i<numsSize;i++){        if(nums[i]==target)            return true;        if(i+1<numsSize && nums[i+1]<nums[i])            break;    }    int left = i+1;    int right = numsSize-1;    while(left<=right){        int mid = (left+right)/2;        if(nums[mid]==target)            return true;        else if(nums[mid]<target)            left = mid+1;        else            right = mid-1;    }    return false;}

代码2:暴力搜索(8ms)

int search(int* nums, int numsSize, int target) {    int i;    for(i = 0;i<numsSize;i++){        if(nums[i]==target)            break;    }    if(i>=numsSize)        return -1;    return i;}
0 0