Skip to content

Commit a267055

Browse files
committed
search in rotated sorted array solved
1 parent bdb5557 commit a267055

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Solution {
2+
// 시간 복잡도: O(log n)
3+
// 공간 복잡도: O(1);
4+
public int search(int[] nums, int target) {
5+
int left = 0;
6+
int right = nums.length - 1;
7+
8+
while(left <= right) {
9+
int mid = (left + right) / 2;
10+
11+
if(nums[mid] > nums[nums.length - 1]) {
12+
left = mid + 1;
13+
} else {
14+
right = mid - 1;
15+
}
16+
}
17+
18+
int answer = binarySearch(nums, 0, left - 1, target);
19+
20+
return answer != -1 ? answer : binarySearch(nums, left, nums.length - 1, target);
21+
}
22+
23+
private int binarySearch(int[] nums, int leftIndex, int rightIndex, int target) {
24+
int left = leftIndex;
25+
int right = rightIndex;
26+
27+
while(left <= right) {
28+
int mid = (left + right) / 2;
29+
30+
if(nums[mid] == target) {
31+
return mid;
32+
} else if (nums[mid] < target) {
33+
left = mid + 1;
34+
} else {
35+
right = mid - 1;
36+
}
37+
}
38+
39+
return -1;
40+
}
41+
}

0 commit comments

Comments
 (0)