Skip to content

Commit 713ac16

Browse files
committed
Find Minimum in Rotated Sorted Array solution
1 parent 2c306f3 commit 713ac16

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์ด 1~n๋ฒˆ ํšŒ์ „๋œ ์ƒํƒœ์—์„œ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š” ๋ฌธ์ œ
3+
* ๋ฌธ์ œ ํ•ต์‹ฌ:
4+
* 1. ๋ฐฐ์—ด์€ ์›๋ž˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์—ˆ์Œ
5+
* 2. ๊ทธ ๋ฐฐ์—ด์ด 1~n๋ฒˆ ํšŒ์ „๋˜์—ˆ์Œ
6+
* 3. ์ตœ์†Œ๊ฐ’์„ O(log n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์ฐพ์•„์•ผ ํ•จ
7+
*
8+
* => ์ด ๋ฌธ์ œ๋Š” ํšŒ์ „๋œ ๋ฐฐ์—ด์—์„œ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•จ
9+
* => ์ตœ์†Œ๊ฐ’์€ pivot ํฌ์ธํŠธ(ํšŒ์ „์ด ์ผ์–ด๋‚œ ์ง€์ )์—์„œ ๋ฐœ๊ฒฌ๋จ
10+
*/
11+
12+
/**
13+
* @param {number[]} nums - ํšŒ์ „๋œ ์ •๋ ฌ ๋ฐฐ์—ด
14+
* @return {number} - ๋ฐฐ์—ด์˜ ์ตœ์†Œ๊ฐ’
15+
*/
16+
var findMin = function (nums) {
17+
let left = 0; // ๊ฒ€์ƒ‰๋ฒ”์œ„์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค
18+
let right = nums.length - 1; // ๊ฒ€์ƒ‰๋ฒ”์œ„์˜ ๋ ์ธ๋ฑ์Šค
19+
20+
// ์ด์ง„ ํƒ์ƒ‰
21+
while (left < right) {
22+
const mid = Math.floor((left + right) / 2);
23+
24+
// ์ค‘๊ฐ„ ๊ฐ’์ด ์˜ค๋ฅธ์ชฝ ๋ ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด, ์ตœ์†Œ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์— ์žˆ์Œ
25+
if (nums[mid] > nums[right]) {
26+
left = mid + 1;
27+
}
28+
// ์ค‘๊ฐ„ ๊ฐ’์ด ์˜ค๋ฅธ์ชฝ ๋ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด, ์ตœ์†Œ๊ฐ’์€ ์™ผ์ชฝ์— ์žˆ์Œ (์ค‘๊ฐ„ ํฌํ•จ)
29+
else {
30+
right = mid;
31+
}
32+
}
33+
34+
// ๋ฐ˜๋ณต์ด ๋๋‚˜๋ฉด left์™€ right๋Š” ๊ฐ™์€ ์ธ๋ฑ์Šค์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , ์ด ์ธ๋ฑ์Šค์˜ ๊ฐ’(ํ”ผ๋ด‡ํฌ์ธํŠธ) = ์ตœ์†Œ๊ฐ’์˜ ์œ„์น˜
35+
return nums[left];
36+
};

0 commit comments

Comments
ย (0)