81 Search in Rotated Sorted Array II
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.
和33题的区别就是http://www.cnblogs.com/li-daphne/p/5566373.html
就是数组中的数可以是重复的。
比如
/**
1. 1.. 1... 3 4 5
5 1. 1.. 1... 2 3 4
4 5 1. 1.. 1... 2 3
3 4 5 1. 1.. 1... 2
2 3 4 1. 1.. 1...
1... 2 3 5 1. 1..
1.. 1... 2 4 5 1.
*/
1 3 1 1
1 1 1 1
1 1 3 1
1 1 1 3
3 1 1 1
图画的不好,完美的避开了所有演示。
在将nums利用mid分为左右两部分后,你不能通过nums[mid]<num[right]来判断右边是有序的,或利用nums[mid]>nums[right]判断左边是有序的。
如果nums[mid]<=nums[right]分为两部分:
如果nums[mid]<nums[right],则右边是有序,利用排除法现在有序的部分搜索;后再无序的部分搜索。
如果nums[mid]==nums[right],right--后再看下一步就行了。
-----
bool search_2(vector<int> &nums,int target){
if(nums.size()==) return false;
int left = ;
int right = nums.size()-;
while(left<=right){
int mid = (left+right)/;
if(nums[mid]==target) return true;
else if(nums[mid]<nums[right]){
//我们已经直到数组的右边是有序的,
if(nums[mid]<target && target <=nums[right])//判断有序的数组是不是存在target,方法是?
left = mid+;
else
right = mid-;
}else if(nums[mid]>nums[right]){
//这里我们假定数组左边的是有序的
if(target >=nums[left] && target<=nums[mid])///判断左边 有序的数组是不是存在target,方法是?
right = mid-;
else
left = mid+;
}else{
///nums[mid]==nums[right], right左移一位,再试一试
right--;
}
}
return false;
}
81 Search in Rotated Sorted Array II的更多相关文章
- LeetCode 81 Search in Rotated Sorted Array II [binary search] <c++>
LeetCode 81 Search in Rotated Sorted Array II [binary search] <c++> 给出排序好的一维有重复元素的数组,随机取一个位置断开 ...
- leetcode 153. Find Minimum in Rotated Sorted Array 、154. Find Minimum in Rotated Sorted Array II 、33. Search in Rotated Sorted Array 、81. Search in Rotated Sorted Array II 、704. Binary Search
这4个题都是针对旋转的排序数组.其中153.154是在旋转的排序数组中找最小值,33.81是在旋转的排序数组中找一个固定的值.且153和33都是没有重复数值的数组,154.81都是针对各自问题的版本1 ...
- 33. Search in Rotated Sorted Array & 81. Search in Rotated Sorted Array II
33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ...
- 【LeetCode】81. Search in Rotated Sorted Array II (2 solutions)
Search in Rotated Sorted Array II Follow up for "Search in Rotated Sorted Array":What if d ...
- [LeetCode] 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. ...
- LeetCode 81. Search in Rotated Sorted Array II(在旋转有序序列中搜索之二)
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...
- 【一天一道LeetCode】#81. Search in Rotated Sorted Array II
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Follow ...
- [leetcode]81. Search in Rotated Sorted Array II旋转过有序数组里找目标值II(有重)
This is a follow up problem to Search in Rotated Sorted Array, where nums may contain duplicates. 思路 ...
- 81. Search in Rotated Sorted Array II (Array; Divide-and-Conquer)
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...
随机推荐
- HDU 5945 维护一个单调队列 dp
Fxx and game Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Tot ...
- 根据域名获取IP地址,并探测是否可达
/* Author :decwang@2014.09.01 Mail :deworks@sina.com*/#define PRINTLOG printf//返回0表示成功,其他为失败. int ge ...
- AndroidStudio导入Android-PullToRefresh
方法已经写到我的微信公众号中,公众号二维码在下面 本人联系方式: 更多精彩分享,可关注我的微信公众号: 若想给予我分享更多知识的动力,请扫描下面的微信打赏二维码,谢谢!: 微信号:WeixinJung ...
- 增量更新项目时的备份MyBak
在增量更新项目时,做好备份十分重要,这里提供一个方法备份java Web所更新的文件. 把更新包放在指定目录,配好如下webappFolder.updateFolder以及bakeupFolder的路 ...
- HTML里的id等属性命名需要注意
提交 $(function(){ $('#submit').click(function(){ $('#form').submit() }) }) 这里的代码无法完成提交,因为id被命名为submit ...
- ABB机器人添加串口模块后无法使用的解决办法
[环境] ABB机器人1520,IRC5,RobotWare5.6,Win10 64bits,RobotStudio6.0 [过程和表现] 由于项目需要和机器人通信,DeviceNet又不能满足要求, ...
- 点亮LED(库函数实现)
本次测试采用的芯片是STM32F103CB 我的开发板如下: 此开发板有8个led,分别为D11,D12,D13,D14,D15,D16,D17,D18.查询核心板的电路图后知道其对应芯片的控制引脚为 ...
- 论文阅读之 DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation
DECOLOR: Moving Object Detection by Detecting Contiguous Outliers in the Low-Rank Representation Xia ...
- javascript 遍历object对象
(function(){ var str = ''; for(var i in obj){ //遍历object str += '\n'+(i+' : '+obj[i]); // i+' : '+ob ...
- API、ABI区别
http://blog.csdn.net/xinghun_4/article/details/7905298 应用程序二进制接口(ABI-Application Binary Interface)定义 ...