码迷,mamicode.com
首页 > 其他好文 > 详细

81.Search in Rotated Sorted Array II---二分变形

时间:2018-06-22 13:19:03      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:解法   href   ble   span   none   get   alt   turn   比较   

题目链接

题目大意:与33题类似,只是这里数组中有重复数值。

法一:解法与33题类似,只是这里要处理1,3,1,1,1这种情况,即有重复值时,mid与left和right都相等时,可以采用right--的方式错开相等值再比较。代码如下(耗时2ms):

技术分享图片
 1     public boolean search(int[] nums, int target) {
 2         int left = 0, right = nums.length - 1;
 3         while(left <= right) {
 4             int mid = (left + right) / 2;
 5             if(nums[mid] == target || nums[left] == target || nums[right] == target) {
 6                 return true;
 7             }
 8             //如果左数组有序
 9             else if(nums[left] < nums[mid]) {
10                 //如果target在左数组中
11                 if(target < nums[mid] && target > nums[left]) {
12                     right = mid - 1;
13                 }
14                 else {
15                     left = mid + 1;
16                 }
17             }
18             //如果右数组有序
19             else if(nums[mid] < nums[right]){
20                 //如果target在右数组中
21                 if(target < nums[right] && target > nums[mid]) {
22                     left = mid + 1;
23                 }
24                 else {
25                     right = mid - 1;
26                 }
27             }
28             //如果出现1,3,1,1,1的情况,mid值与left和right都相等,则将right--再比较
29             else {
30                 right--;
31             }
32         }
33         return false;
34     }
View Code

 

81.Search in Rotated Sorted Array II---二分变形

标签:解法   href   ble   span   none   get   alt   turn   比较   

原文地址:https://www.cnblogs.com/cing/p/9212551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!