Skip to content

Commit df07170

Browse files
authored
[ PS ] : Search In Rotated Sorted Array
1 parent ed96297 commit df07170

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+
/**
2+
* 주어진 배열에서 타겟의 인덱스를 찾아 반환하는 함수
3+
* @param {number[]} nums
4+
* @param {number} target
5+
* @return {number}
6+
*/
7+
const search = function (nums, target) {
8+
let left = 0;
9+
let right = nums.length;
10+
let mid = Math.floor((left + right) / 2);
11+
12+
while (left < right) {
13+
mid = Math.floor((left + right) / 2);
14+
15+
if (nums[mid] === target) break;
16+
17+
// left부터 mid까지 잘 정렬되어 있는 경우 (=> rotate된 부분은 mid부터 right 사이에 있음)
18+
if (nums[left] < nums[mid]) {
19+
// 정렬된 left부터 mid 사이에 타겟이 있는 경우
20+
if (nums[left] <= target && target <= nums[mid]) {
21+
right = mid;
22+
} else {
23+
left = mid + 1;
24+
}
25+
}
26+
// mid부터 right까지 잘 정렬되어 있는 경우 (=> rotate된 부분은 left부터 mid 사이에 있음)
27+
else {
28+
// 정렬된 mid부터 right 사이에 타겟이 있는 경우
29+
if (nums[mid] <= target && target <= nums[right - 1]) {
30+
left = mid;
31+
} else {
32+
right = mid;
33+
}
34+
}
35+
}
36+
37+
return nums[mid] === target ? mid : -1;
38+
};
39+
40+
// O(log n)
41+
// O(1)

0 commit comments

Comments
 (0)