Skip to content

Commit 1f03fb7

Browse files
committed
search-in-rotated-sorted-array
1 parent 683ad2c commit 1f03fb7

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
class Solution {
2+
public int search(int[] nums, int target) {
3+
int leftSide = 0;
4+
int rightSide = nums.length - 1;
5+
int left = 0;
6+
int right = nums.length;
7+
int mid;
8+
9+
if (nums.length == 1) {
10+
if (nums[0] == target) return 0;
11+
else return -1;
12+
}
13+
14+
while (left + 1 < right) {
15+
mid = (int) (left + right) / 2;
16+
17+
if (nums[mid]==target) {
18+
break;
19+
}
20+
else if (nums[mid] < target){ // 값이 증가해야함
21+
if (nums[mid] >= nums[leftSide]){ // 왼쪽 그룹에 속하는 지
22+
left = mid;
23+
} else { // 오른쪽 그룹에 속하는 지
24+
if (nums[rightSide] < target) {
25+
right = mid;
26+
} else {
27+
left = mid;
28+
}
29+
}
30+
} else{ // nums[mid] > target // 값이 감소해야함
31+
if (nums[mid] >= nums[leftSide]){ // 왼쪽 그룹에 속하는 지
32+
if (nums[leftSide] <= target) {
33+
right = mid;
34+
} else {
35+
left = mid;
36+
}
37+
} else { // 오른쪽 그룹에 속하는 지
38+
right = mid;
39+
}
40+
41+
}
42+
}
43+
mid = (int)((left + right) / 2);
44+
if (nums[mid]==target) return mid;
45+
else return -1;
46+
}
47+
}
48+
49+

0 commit comments

Comments
 (0)