Skip to content

Commit 04e55ea

Browse files
committed
feat: Upload search-in-rotated-sorted-array (typescript)
1 parent 6d6de99 commit 04e55ea

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Source: https://leetcode.com/problems/search-in-rotated-sorted-array/description/
3+
* 풀이방법: 이진탐색을 κ΅¬ν˜„ν•΄μ„œ μ›ν•˜λŠ” 값을 찾음
4+
*
5+
* μ‹œκ°„λ³΅μž‘λ„: O(log n) - λ§€ λ°˜λ³΅λ§ˆλ‹€ 탐색 λ²”μœ„κ°€ 절반으둜 쀄어듦
6+
* κ³΅κ°„λ³΅μž‘λ„: O(1) - μΆ”κ°€ 곡간을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  포인터 λ³€μˆ˜λ§Œ μ‚¬μš©
7+
*
8+
* 포인트
9+
* - λ¬Έμ œμ—μ„œ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό O(log n)을 ν•˜λΌκ³  μ œν•œμ„ ν–ˆκΈ°λ•Œλ¬Έμ— μ‰½κ²Œ μ΄μ§„νƒμƒ‰μœΌλ‘œ ν’€μ–΄μ•Ό 함을 νŒŒμ•…ν•¨
10+
*/
11+
12+
function search(nums: number[], target: number): number {
13+
let left = 0;
14+
let right = nums.length - 1;
15+
16+
while (left <= right) {
17+
let mid = Math.floor((left + right) / 2);
18+
if (nums[mid] === target) return mid;
19+
else if (nums[mid] >= nums[left]) {
20+
if (nums[left] <= target && target <= nums[mid]) right = mid - 1;
21+
else left = mid + 1;
22+
} else {
23+
if (nums[mid] <= target && target <= nums[right]) left = mid + 1;
24+
else right = mid - 1;
25+
}
26+
}
27+
return -1;
28+
}

0 commit comments

Comments
Β (0)