Search in Rotated Sorted Array II

来源:互联网 发布:图书数据哪个网站多 编辑:程序博客网 时间:2024/06/08 06:15

题目大意

还是跟上一题差不多,只是这一次数组里的元素可以重复。返回是否存在这个值。

思路

如果 nums[mid] >= nums[l], 那么 [l, mid] 为递增序列的假设就不能成立了。所以把这个条件拆成两个。
nums[l] < nums[mid]的话 [l, mid]是一定会递增的
nums[l] == nums[mid] 无法判断,令l++

其他条件同上一题

CODE

class Solution {public:    bool search(vector<int>& nums, int target) {        int l = 0, r = nums.size();        while (l != r)        {            const int mid = (l + r) >> 1;            if (target == nums[mid])                return true;            if (nums[l] < nums[mid])            {                if (nums[l] <= target                 && target < nums[mid])                {                    r = mid;                    continue;                }                l = mid + 1;                continue;            }            if (nums[l] > nums[mid])            {                if (nums[mid] < target                 && target <= nums[r - 1])                {                    l = mid + 1;                    continue;                }                r = mid;                continue;            }            l++;        }        return false;    }};

参考资料

LeetCode 题解
灵魂机器 (soulmachine@gmail.com) https://github.com/soulmachine/leetcode

0 0
原创粉丝点击