Skip to content

Commit 87c00ae

Browse files
committed
0153-find-minimum-in-rotated-sorted-array
1 parent a411acc commit 87c00ae

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* [풀이 κ°œμš”]
3+
* - μ‹œκ°„λ³΅μž‘λ„ : O(log n)
4+
* - κ³΅κ°„λ³΅μž‘λ„ : O(1)
5+
*/
6+
class Solution {
7+
/**
8+
* [문제 풀이 아이디어]
9+
* - μ •λ ¬λœ 배열이 μ‹œν”„νŠΈ 된 ν˜•νƒœλ‘œ 주어짐. κ·ΈλŸ¬λ‹ˆκΉŒ μ›λž˜λŠ” μ˜€λ¦„μ°¨μˆœ μ •λ ¬μž„
10+
* - μ΄λ•Œ μ΅œμ†Œ 값을 μ°Ύμ•„μ•Ό 함
11+
* - λ°˜μ”© λ‚˜λˆ„μ–΄ νƒμƒ‰ν•˜λŠ” 이뢄 탐색 ν˜•νƒœλ‘œ μ‹œκ°„λ³΅μž‘λ„λŠ” O(log n)
12+
* - λ³„λ„λ‘œ μœ μ˜λ―Έν•œ 곡간 할당을 ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ κ³΅κ°„λ³΅μž‘λ„λŠ” O(1)
13+
*/
14+
public int findMin(int[] nums) {
15+
int len = nums.length - 1;
16+
// 쀑간 지점은 전체 κ°― 수λ₯Ό 2둜 λ‚˜λˆˆ 수둜 함. λ°°μ—΄μ˜ ν¬κΈ°λŠ” 1 이상 5000 μ΄ν•˜ μ΄λ―€λ‘œ int 컀버 됨.
17+
18+
int left = 0;
19+
int right = len;
20+
21+
while(left < right) {
22+
int mid = (left + right) / 2;
23+
if(nums[mid] < nums[right]) { // mid μš°μΈ‘μ€ μ‚΄νŽ΄λ³Ό ν•„μš”κ°€ μ—†μŒ
24+
right = mid; // midκ°€ μ΅œμ†Œκ°’μΌ κ°€λŠ₯μ„± 있음
25+
} else {
26+
// nums[mid] > nums[right] // mid μ’ŒμΈ‘μ€ μ‚΄νŽ΄λ³Ό ν•„μš”κ°€ μ—†μŒ
27+
left = mid + 1 ; // midκ°€ μ΅œμ†Œ 값일 κ°€λŠ₯μ„± μ—†μŒ
28+
}
29+
}
30+
return nums[left];
31+
}
32+
}

0 commit comments

Comments
Β (0)