LeetCode:81. Search in Rotated Sorted Array II

本文介绍了一种改进的二分查找算法,用于解决在含有重复元素的旋转有序数组中搜索特定目标值的问题。通过分析不同情况,该算法能够有效确定搜索范围,实现高效查找。

这题是在32. Search in Rotated Sorted Array I的基础上,处理特殊情况有重复数据的问题,有两个代表例子

如3,1,1和1,1,3,1只需在原基础上考虑这两种请求,完善上一题的分类思想,还有就是二分查找的迭代会完成接

下来的事情

class Solution {
public:
    bool search(vector<int>& nums, int target) {
        int low,high;
        int media;
            
        low = 0;
        high = nums.size() - 1;
       
        
        while(low <= high){
            
            
            media = (high+low) / 2;

            if(nums[media] == target)
                return true;

            
           if(nums[media] < nums[high])
    			if(nums[media] < target && target <= nums[high])
    				low = media + 1;
    			else
    				high = media - 1;
	       else if(nums[media] > nums[high])
    			if(nums[low] <= target && target < nums[media])
    				high = media - 1;
    			else 
    				low = media + 1;
    	   else 
    	        if(nums[high] != nums[low])
    	            high = media - 1;
    	        else
                    high = high - 1;

        }
        
        return false;
    }
};

 

转载于:https://www.cnblogs.com/jackes/p/5313951.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值