Skip to content

Commit 844a7df

Browse files
update post
1 parent bdb666b commit 844a7df

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

_posts/2024-06-03-leetcode-153.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,76 @@ class Solution {
5656
### TC, SC
5757

5858
시간 복잡도는 O(n)이고, 공간 복잡도는 O(1)이다.
59+
60+
## 조금 더 최적화 하자면 (binary search like)
61+
62+
문제에서 O(log n) 의 시간복잡도로 풀어보라고 제시하였다. log n 이 들어갔으니 트리같은 방식으로 접근을 하나? 라는 생각이 우선 들었다.
63+
64+
다른 사람들의 풀이를 보니 다음과 푸는 것을 볼 수 있었다.
65+
66+
```java
67+
public int findMin(int[] nums) {
68+
int left = 0, right = nums.length - 1;
69+
while(left < right) {
70+
int mid = left + (right - left) / 2;
71+
72+
if(nums[mid] < nums[right]) {
73+
right = mid;
74+
} else {
75+
left = mid + 1;
76+
}
77+
}
78+
79+
return nums[left];
80+
}
81+
```
82+
83+
### case 나눠서 생각해보기
84+
85+
머릿속에서 상상이 잘 가지 않아. 케이스를 나눠서 생각해보았다.
86+
87+
#### 1. `[0,1,2,4,5,6,7]` 완벽하게 정렬되어 있을 경우
88+
89+
- 첫번째 반복
90+
- left:0, right: 6 → mid: 3 → right = 3
91+
- 두번째 반복
92+
- left:0, right: 3 → mid: 1 → right = 1
93+
- 세번째 반복
94+
- left:0, right: 1 → mid: 0 → right = 0
95+
- 반복 종료
96+
- `return nums[0]`
97+
98+
#### 2. `[6,7,0,1,2,4,5]` 최솟값이 왼쪽에 있을 경우
99+
100+
- 첫번째 반복
101+
- left:0, right: 6 → mid: 3 → right = 3
102+
- 두번째 반복
103+
- left:0, right: 3 → mid: 1 → right = 2
104+
- 세번째 반복
105+
- left:2, right: 3 → mid: 2 → right = 2
106+
- 반복 종료
107+
- `return nums[2]`
108+
109+
#### 3. `[4,5,6,7,0,1,2]` 최솟값이 오른쪽에 있을 경우
110+
111+
- 첫번째 반복
112+
- left:0, right: 6 → mid: 3 → left = 4
113+
- 두번째 반복
114+
- left:4, right: 6 → mid: 5 → right = 5
115+
- 세번째 반복
116+
- left:4, right: 5 → mid: 4 → right = 4
117+
- 반복 종료
118+
- `return nums[4]`
119+
120+
#### 4. `[1,2,4,5,6,7,0]` 최솟값이 오른쪽 맨 끝에 있을 경우
121+
122+
- 첫번째 반복
123+
- left:0, right: 6 → mid: 3 → left = 4
124+
- 두번째 반복
125+
- left:4, right: 6 → mid: 5 → left = 6
126+
- 반복 종료
127+
- `return nums[6]`
128+
129+
### TC, SC
130+
131+
시간 복잡도는 O(log n)이고, 공간 복잡도는 O(1)이다.

0 commit comments

Comments
 (0)