Skip to content

Commit e7d423e

Browse files
committed
DaleStudy#245 Find Minimum In Rotated Sorted Array
1 parent eae19b9 commit e7d423e

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+
# Time Complexity: O(logn)
3+
# Space Complexity: O(1)
4+
5+
binary search๋ฅผ ์‚ฌ์šฉํ•ด ์ ‘๊ทผํ–ˆ์Šต๋‹ˆ๋‹ค.
6+
sorted array์ธ ๊ฒฝ์šฐ๋Š” while๋ฌธ ์‹œ์ž‘ ์ „, ์˜ˆ์™ธ ์ฒดํฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
7+
binary search๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด, ๊ฐ๊ฐ์˜ loop์˜ mid ์›์†Œ๋Š” ์•„๋ž˜ 4๊ฐ€์ง€ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
8+
maximum / minimum / ์•ž์ชฝ ์ˆ˜์—ด์˜ ์›์†Œ ์ค‘ ํ•˜๋‚˜ / ๋’ค์ชฝ ์ˆ˜์—ด์˜ ์›์†Œ ์ค‘ ํ•˜๋‚˜
9+
maximum์ด๊ฑฐ๋‚˜ minimum์ธ ๊ฒฝ์šฐ๋Š” ๋” ์ด์ƒ ํƒ์ƒ‰ํ•  ํ•„์š” ์—†์ด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
10+
์•ž์ชฝ ์ˆ˜์—ด์ธ ๊ฒฝ์šฐ, ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” minimum์€ ์™ผ์ชฝ์—๋Š” ์—†์œผ๋ฏ€๋กœ, left ํฌ์ธํ„ฐ๋ฅผ mid์˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  ๋‹ค์Œ loop๋ฅผ ์ง„ํ–‰ํ•˜๊ณ ,
11+
๋’ค์ชฝ ์ˆ˜์—ด์ธ ๊ฒฝ์šฐ, ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” minimum์€ ์˜ค๋ฅธ์ชฝ์—๋Š” ์—†์œผ๋ฏ€๋กœ, rigth ํฌ์ธํ„ฐ๋ฅผ mid์˜ ์™ผ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  ๋‹ค์Œ loop๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
12+
13+
*/
14+
class Solution {
15+
public int findMin(int[] nums) {
16+
int l = 0;
17+
int r = nums.length - 1;
18+
19+
if (nums[l] <= nums[r]) { // sorted array์ธ ๊ฒฝ์šฐ (size๊ฐ€ 1์ธ ๊ฒฝ์šฐ๋„ ํฌํ•จ)
20+
return nums[l];
21+
}
22+
23+
while (l <= r) {
24+
int m = (r - l) / 2 + l; // ๋งŒ์•ฝ ๋ฌธ์ œ ์กฐ๊ฑด์ƒ l, r์˜ ํ•ฉ์ด int ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€์„œ overflow๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—, ์ด๋Ÿฐ ์‹์œผ๋กœ overflow๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” overflow ๊ฑฑ์ •์€ ์—†์ง€๋งŒ, ๋‚˜์ค‘์— ์‹ค์ „์—์„œ ๋‚˜์˜ค๋ฉด ์žŠ์ง€ ์•Š์œผ๋ ค๊ณ  ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
25+
if (m > 0 && nums[m - 1] > nums[m]) {
26+
return nums[m];
27+
} else if (m < nums.length - 1 && nums[m] > nums[m + 1]) {
28+
return nums[m + 1];
29+
} else if (nums[m] > nums[l]) {
30+
l = m + 1;
31+
} else {
32+
r = m - 1;
33+
}
34+
}
35+
36+
return -1;
37+
}
38+
}

0 commit comments

Comments
ย (0)