p33

LeetCode 33 Search in Rotated Sorted Array 题解

1.题目:

Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
Subscribe to see which companies asked this question

题意:

在一个被扭转的有序数组里查找一个数的坐标

2.解题思路:

二分搜索,先确定有序部分,在确定数字是否在此部分,如果在则进行二分搜索。

3.代码


[title] [] [url] [link text]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 

public class Solution {
public int search(int[] nums, int target) {

int s = 0;
int e = nums.length - 1;
while (s <= e) {
int mid = (s + e) / 2;
if (nums[mid] == target)
return mid;

if (nums[s] <= nums[mid]) {// 前部分全是有序的
if (target < nums[mid] && target >= nums[s])
e = mid - 1;
else
s = mid + 1;
}

if (nums[mid] <= nums[e]) {// 后部分全是有序的
if (target > nums[mid] && target <= nums[e])
s = mid + 1;
else
e = mid - 1;
}
}
return -1;
}
}


4.一些总结: