首页 > 其他 > 详细

LeetCode Search in Rotated Sorted Array II

时间:2015-04-10 11:31:34      阅读:212      评论:0      收藏:0      [点我收藏+]

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.

题意:一个已经排序过得有重复元素的数组翻转后查找target。

思路:每次判断A[left],A[mid],A[right]的关系,然后找到确定是递增的部分接着二分,也有特殊情况就是left++,right--

class Solution {
public:
    bool search(int A[], int n, int target) {
        int left = 0, right = n-1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (A[mid] == target) return true;
            if (A[left] < A[mid]) {
                if (A[left] <= target && target < A[mid])
                    right = mid - 1;
                else left = mid + 1;
            } else if (A[mid] < A[right]) {
                if (A[mid] < target && target <= A[right])
                    left = mid + 1;
                else right = mid - 1;
           } else if (A[left] == A[mid]) left += 1;
           else if (A[right] == A[mid]) right -= 1;
        }

        return false;
    }
};



LeetCode Search in Rotated Sorted Array II

原文:http://blog.csdn.net/u011345136/article/details/44975453

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!