首页 > 代码库 > 【leetcode】Search in Rotated Sorted Array II

【leetcode】Search in Rotated Sorted Array II

Search in Rotated Sorted Array II

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.

 
I类似,只是在二分搜索前,只是在判断左右两边是否有序时更加麻烦一些。
此时复杂度是O(n)了,和采用线性搜索的方法基本一致
 
 1 class Solution { 2 public: 3     bool search(int A[], int n, int target) { 4         5         6         int left=0; 7         int right=n-1; 8         int mid; 9         while(left<=right)10         {11            12             mid=(left+right)/2;13             if(A[mid]==target)14             {15                 return true;16             }17            18  19             //增加了这些判断语句20             bool isLeft=true;21            22             for(int i=left;i<=mid;i++)23             {24                 if(A[i]>A[mid])25                 {26                     isLeft=false;27                     break;28                 }29             }30            31             if(isLeft)32             {33                 if(A[left]<=target&&target<A[mid])34                 {35                     right=mid-1;36                 }37                 else38                 {39                     left=mid+1;40                 }41             }42             else43             {44                 if(A[mid]<target&&target<=A[right])45                 {46                     left=mid+1;47                 }48                 else49                 {50                     right=mid-1;51                 }52             }53  54         }55         return false;56        57     }58 };

 

 

【leetcode】Search in Rotated Sorted Array II