leetcode------Search in Rotated Sorted ArrayII

题目 Search in Rotated Sorted ArrayII
通过率: 31.4%
难度: 中等

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.

本题意思是会出现重复元素

如:456701234;

但是我发现我再第一版本中的做法是不受本题影响的,具体参照我第一个版本的做法

代码如下:

 1 public class Solution {
 2     public boolean search(int[] A, int target) {
 3        int start=0,end=A.length-1,mid=0;
 4         while(start<=end){
 5             mid=(start+end)/2;
 6             if(A[mid]==target)return true;
 7             if(A[start]<A[mid]){
 8                 if((target<A[mid])&&(target>=A[start]))
 9                     end=mid-1;
10                     else start=mid+1;
11             }
12             else if(A[start]>A[mid]){
13                 if((target<A[mid])||(target>=A[start]))
14                     end=mid-1;
15                     else start=mid+1;
16             }
17             else start++;
18         }
19         return false;
20     }
21 }

python:

 1 class Solution:
 2     # @param A, a list of integers
 3     # @param target, an integer to be searched
 4     # @return an integer
 5 
 6     def search(self, A, target):
 7         left = 0
 8         right = len(A) - 1
 9         while(left <= right):
10             mid = (left + right) / 2
11             if (A[mid] == target):
12                 return True
13             if (A[left] < A[mid]):
14                 if (target >= A[left] and target < A[mid]):
15                     right = mid - 1
16                 else:
17                     left = mid + 1
18             elif (A[left] > A[mid]):
19                 if (target > A[mid] and target <= A[right]):
20                     left = mid + 1
21                 else:
22                     right = mid - 1
23             else:
24                 left += 1
25         return False

 

posted @ 2015-02-12 11:30  pku_smile  阅读(159)  评论(0编辑  收藏  举报