Skip to content

Commit 2b3fdc6

Browse files
committed
add find minimum in rotated sorted array solution
1 parent 452f931 commit 2b3fdc6

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+
* 길이가 n인 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ 숫자 배열이 1 ~ n번 νšŒμ „ν–ˆλ‹€. νšŒμ „λœ λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 수λ₯Ό μ°Ύμ•„μ„œ λ°˜ν™˜ν•˜μ‹œμ˜€.
3+
*/
4+
class Solution {
5+
6+
// 이진 탐색: μ‹œκ°„λ³΅μž‘λ„: O(log n)
7+
public int findMin(int[] nums) {
8+
int left = 0;
9+
int right = nums.length - 1;
10+
while (left < right) {
11+
int mid = (left + right) / 2;
12+
if (nums[mid] > nums[right]) {
13+
left = mid + 1;
14+
} else {
15+
right = mid;
16+
}
17+
}
18+
return nums[left];
19+
}
20+
21+
22+
// 1μ°¨λŠ” λ‹¨μˆœν•˜κ²Œ μ•žλ’€ λ°°μ—΄ μš”μ†Œ λΉ„κ΅λ‘œ ν’€μ–΄λ΄„: O(n^2)
23+
// Submission은 λ˜μ—ˆμ§€λ§Œ μ‹œκ°„ λ³΅μž‘λ„ 기쀀을 λͺ» 맞좘 것 κ°™μ•„μ„œ 이진 νƒμƒ‰μœΌλ‘œ μž¬ν’€μ΄ μ§„ν–‰
24+
// public int findMin(int[] nums) {
25+
// int rotate = 0;
26+
// for (int i = 0; i < nums.length - 1; i++) {
27+
// int idx = (i + rotate) < nums.length ? (i + rotate) : (i + rotate) - nums.length;
28+
// int nextIdx = idx + 1 < nums.length ? idx + 1 : nums.length - (idx + 1);
29+
// if (nums[idx] > nums[nextIdx]) {
30+
// rotate++;
31+
// i = -1;
32+
// }
33+
// }
34+
// return nums[rotate];
35+
// }
36+
37+
}
38+

0 commit comments

Comments
Β (0)