Skip to content

Commit a8ec2b3

Browse files
committed
feat: search-in-rotated-sorted-array solution
1 parent c8865fb commit a8ec2b3

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* ์ •๋ ฌ๋œ ๋ฐฐ์—ด์— target ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ
3+
* ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณต์žก๋„
4+
* - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(logn)
5+
* - ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
6+
* @param nums
7+
* @param target
8+
*/
9+
function search(nums: number[], target: number): number {
10+
// findIndex ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„ O(n) ์ž„
11+
// return nums.findIndex(value => value === target)?? -1
12+
13+
// ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•œ ํ’€์ด
14+
let low = 0;
15+
let high = nums.length - 1;
16+
while(low <= high) {
17+
let mid = low + Math.floor((high - low) / 2);
18+
19+
if(nums[mid] === target) return mid
20+
21+
if(nums[low] <= nums[mid]) {
22+
if(nums[low] <= target && target < nums[mid]) {
23+
high = mid - 1;
24+
} else {
25+
low = mid + 1;
26+
}
27+
} else {
28+
if(nums[mid] < target && target <= nums[high]) {
29+
low = mid + 1;
30+
} else {
31+
high = mid - 1;
32+
}
33+
}
34+
35+
}
36+
37+
return -1
38+
}

0 commit comments

Comments
ย (0)