• 81. Search in Rotated Sorted Array II


    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

    (i.e., [0,0,1,2,2,5,6] might become [2,5,6,0,0,1,2]).

    You are given a target value to search. If found in the array return true, otherwise return false.

    Example 1:

    Input: nums = [2,5,6,0,0,1,2], target = 0
    Output: true
    

    Example 2:

    Input: nums = [2,5,6,0,0,1,2], target = 3
    Output: false

    Follow up:

    • This is a follow up problem to Search in Rotated Sorted Array, where nums may contain duplicates.
    • Would this affect the run-time complexity? How and why?
     
    AC code:
    class Solution {
    public:
        bool search(vector<int>& nums, int target) {
            if (nums.size() == 1 && nums[0] == target) return true;
            int l = 0, r = nums.size()-1, m;
            while (l <= r) {
                m = (l + r) / 2;
                if (nums[m] == target) return true;
                if (nums[m] == nums[l] && nums[m] == nums[r]) l++, r--;
                else if (nums[m] <= nums[r]) {
                    if (target > nums[m] && target <= nums[r])
                        l = m + 1;
                    else 
                        r = m - 1;
                } else {
                    if (target < nums[m] && target >= nums[l])
                        r = m - 1;
                    else 
                        l = m + 1;
                }
            }
            return false;
        }
    };
    

    Runtime: 4 ms, faster than 99.15% of C++ online submissions for Search in Rotated Sorted Array II.

    题解:找出排列有序的一端进行二分查找。

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    多线程实现双色球
    使用google api material icons在网页中插入图标
    网页前端制作好的网站
    n元线性方程非负整数解的个数问题
    Dilworth定理证明
    一个简易的Python全站抓取系统
    gensim word2vec好的教程
    C语言一些常用的功能
    python3正则表达式
    python3创建目录
  • 原文地址:https://www.cnblogs.com/h-hkai/p/9844823.html
Copyright © 2020-2023  润新知