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

33.Search in Rotated Sorted Array---二分变形

时间:2018-06-19 13:39:52      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:display   ret   否则   span   none   有序   closed   题目   leetcode   

题目链接

题目大意:在一个旋转数组中,判断给定的target是否存在于该旋转数组中。

法一:二分。确定中间元素之后,就要判断下一步是遍历左数组还是遍历右数组。如果左数组有序,且target在左数组范围内,则遍历左数组,否则遍历右数组;如果右数组有序,且target在右数组范围内,则遍历右数组,否则遍历左数组。o(lgn)。代码如下(耗时15ms):

技术分享图片
 1     public int 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) {
 6                 return mid;
 7             }
 8             //如果左半段有序
 9             else if(nums[left] <= nums[mid]) {
10                 //如果target在左半段范围内
11                 if(nums[left] <= target && nums[mid] > target) {
12                     right = mid - 1;
13                 }
14                 //虽然左半段有序,如果target不在左半段范围内,则向右遍历右半段
15                 else {
16                     left = mid + 1;
17                 }
18             }
19             //如果右半段有序
20             else {
21                 //如果target在右半段范围内
22                 if(nums[right] >= target && nums[mid] < target) {
23                     left = mid + 1;
24                 }
25                 //虽然右半段有序,如果target不在右半段范围内,则向左遍历左半段
26                 else {
27                     right = mid - 1;
28                 }
29             } 
30         }
31         return -1;
32     }
View Code

 

33.Search in Rotated Sorted Array---二分变形

标签:display   ret   否则   span   none   有序   closed   题目   leetcode   

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

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