File tree Expand file tree Collapse file tree
find-minimum-in-rotated-sorted-array Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # [๋ฌธ์ ๋ถ์]
2+ # nums: ์ค๋ฆ์ฐจ์ ์ ๋ ฌ, ์ ์ ๋ฐฐ์ด, ์ค๋ณต ์์
3+ # ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ์๋ฅผ ์ฐพ์ ๋ฐํ
4+ # ์กฐ๊ฑด: O(log n)์ผ๋ก ์์ฑํ ๊ฒ
5+
6+ # [์ ๊ทผ๋ฒ]
7+ # ์ ๋ ฌ๋ ๋ฐฐ์ด์ด ์ฃผ์ด์ง๊ณ , ๋ฐฐ์ด์ด n๋ฒ ํ์ ํ๋ค. ์ถ์ธ๊ฐ ๊บพ์ด๋ ๋ถ๋ถ์ ์ฐพ์ ํ์ ๋ฒ์๋ฅผ ์ขํ๋ค.
8+ # ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์๋ค๋ ์กฐ๊ฑด์ด ์์ผ๋ฏ๋ก ์ด์ง ํ์์ ํตํด ํ์ ๋ฒ์๋ฅผ ์ขํ log n์ผ๋ก ํ์์ด ๊ฐ๋ฅํ๋ค.
9+
10+ # [๋ณต์ก๋]
11+ # ์๊ฐ ๋ณต์ก๋: O(log n), ์ด์ง ํ์์ ํ๋ฏ๋ก log n
12+ # ๊ณต๊ฐ ๋ณต์ก๋: O(1)
13+ class Solution :
14+ def findMin (self , nums : List [int ]) -> int :
15+
16+ # ์ผ์ชฝ/์ค๋ฅธ์ชฝ ๊ฐ์ ์ธ๋ฑ์ค ๊ณ์ฐ
17+ left = 0
18+ right = len (nums ) - 1
19+
20+ while left < right :
21+ # ์ค๊ฐ๊ฐ ์ธ๋ฑ์ค
22+ mid = (left + right ) // 2
23+
24+ # ์ค๊ฐ๊ฐ๊ณผ ์ค๋ฅธ์ชฝ ๊ฐ์ ๋น๊ตํด ์ถ์ธ๊ฐ ๊บพ์ด๋์ง ๋น๊ต
25+ if nums [mid ] > nums [right ]:
26+ # ์ถ์ธ ์ ๊บพ์, ์์์ ์ ์ค๊ฐ๊ฐ ์ธ๋ฑ์ค ๋ฐ๋ก ๋ค์์ผ๋ก ์ฎ๊ธด๋ค
27+ left = mid + 1
28+ else :
29+ # ์ถ์ธ ๊บพ์, ์ข
๋ฃ์ง์ ์ ์ค๊ฐ๊ฐ ์ธ๋ฑ์ค๋ก ์ฎ๊ฒจ์ค๋ค
30+ right = mid
31+
32+ return nums [left ]
You canโt perform that action at this time.
0 commit comments