Skip to content

Commit 3e3b658

Browse files
committed
feat(soobing): week10 > search-in-rotated-sorted-array
1 parent d2f6688 commit 3e3b658

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+
* ๋ฌธ์ œ ์„ค๋ช…
3+
* - ํšŒ์ „๋œ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํƒ€๊ฒŸ ๊ฐ’์„ ์ฐพ๋Š” ๋ฌธ์ œ
4+
* - ์ด์ง„ ํƒ์ƒ‰์˜ ์‘์šฉ ๋ฒ„์ „
5+
*
6+
* ์•„์ด๋””์–ด
7+
* 1) ๋ณ€ํ˜•๋œ ์ด์ง„ ํƒ์ƒ‰ ์‚ฌ์šฉ
8+
* - ์ค‘๊ฐ„ ๊ฐ’๊ณผ ์™ผ์ชฝ, ๋ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์™ผ์ชฝ ์ •๋ ฌ ์˜์—ญ์ธ์ง€ ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ ์˜์—ญ์ธ์ง€ ํ™•์ธ
9+
*/
10+
11+
function search(nums: number[], target: number): number {
12+
let left = 0;
13+
let right = nums.length - 1;
14+
15+
while (left <= right) {
16+
const mid = Math.floor((left + right) / 2);
17+
18+
if (nums[mid] === target) return mid;
19+
20+
// mid๊ฐ€ ์™ผ์ชฝ ์ •๋ ฌ์— ํฌํ•จ
21+
if (nums[mid] >= nums[left]) {
22+
if (target >= nums[left] && target < nums[mid]) {
23+
right = mid - 1;
24+
} else {
25+
left = mid + 1;
26+
}
27+
}
28+
// mid๊ฐ€ ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ์— ํฌํ•จ
29+
else {
30+
if (target < nums[mid] && target <= nums[right]) {
31+
left = mid + 1;
32+
} else {
33+
right = mid - 1;
34+
}
35+
}
36+
}
37+
return -1;
38+
}

0 commit comments

Comments
ย (0)