File tree Expand file tree Collapse file tree 2 files changed +57
-0
lines changed
find-minimum-in-rotated-sorted-array Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change 1+ from typing import List
2+
3+
4+ class Solution :
5+ def findMin (self , nums : List [int ]) -> int :
6+ """
7+ - Idea: ํ์ ๋ ์ ๋ ฌ ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ๊ธฐ ์ํด ๋ ๊ฐ์ ํฌ์ธํฐ, left, right๋ฅผ ์ด์ฉํ๋ค.
8+ ๋ ๊ฐ์ ํฌ์ธํฐ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐฐ์ด์์ ํ์ํ ๋ฒ์๋ฅผ ์ค์ฌ๊ฐ๋๋ฐ ํ์ฉ๋๋ค.
9+ - Time Complexity: O(logn). n์ ๋ฐฐ์ด์ ํฌ๊ธฐ์ด๋ค.
10+ ๋งค๋ฒ ๋ฐฐ์ด์ ์ ๋ฐ์ผ๋ก ๋๋ ์ ํ์ ๋ฒ์๋ฅผ ์ค์ด๊ธฐ ๋๋ฌธ์ O(logn) ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
11+ - Space Complexity: O(1). ๋ฐฐ์ด์ ํฌ๊ธฐ์ ์๊ด์์ด left, right, mid ๋ณ์๋ง ์ฌ์ฉ๋๋ฏ๋ก
12+ ์์ ๊ณต๊ฐ๋ง ์ฐจ์งํ๋ค.
13+ """
14+ left , right = 0 , len (nums ) - 1
15+
16+ while left < right :
17+ mid = (left + right ) // 2
18+
19+ if nums [right ] < nums [mid ]:
20+ left = mid + 1
21+ else :
22+ right = mid
23+
24+ return nums [left ]
Original file line number Diff line number Diff line change 1+ from typing import Optional
2+
3+
4+ # Definition for singly-linked list.
5+ class ListNode :
6+ def __init__ (self , x : int ) -> None :
7+ self .val = x
8+ self .next = None
9+
10+
11+ class Solution :
12+ def hasCycle (self , head : Optional [ListNode ]) -> bool :
13+ """
14+ - Idea: ์ฌ์ดํด์ด ์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ธ์ง ํ๋จํ๊ธฐ ์ํด ๋ ๊ฐ์ ํฌ์ธํฐ, slow์ fast๋ฅผ ์ฌ์ฉํ๋ค.
15+ slow ํฌ์ธํฐ๋ ํ๋ฒ์ ํ ์นธ์ฉ, fast ํฌ์ธํฐ๋ ํ๋ฒ์ ๋ ์นธ์ฉ ์ด๋ํ๋ค.
16+ ๋ง์ฝ ๋ ํฌ์ธํฐ๊ฐ ๋ง๋๋ฉด, ๋ฆฌ์คํธ์ ์ฌ์ดํด์ด ์กด์ฌํ๋ค๊ณ ํ๋จํ ์ ์๋ค.
17+ fast๊ฐ ๋ฆฌ์คํธ์ ๋์ ๋๋ฌํ๋ค๋ฉด ์ฌ์ดํด์ด ์๋ค๊ณ ํ๋จํ๋ค.
18+ - Time Complexity: O(n). n์ ๋ฆฌ์คํธ์ ํฌํจ๋ ๋
ธ๋์ ๊ฐ์๋ค.
19+ ์ฌ์ดํด์ด ์๋ ๊ฒฝ์ฐ, fast ํฌ์ธํฐ๋ ๋ฆฌ์คํธ ๋๊น์ง ์ด๋ํ๋ค.
20+ ์ฌ์ดํด์ด ์๋ ๊ฒฝ์ฐ, ๋ ํฌ์ธํฐ๊ฐ ๋ง๋ ๋๊น์ง ์ด๋ํ๋ฏ๋ก O(n)์ ์๊ฐ์ด ์์๋๋ค.
21+ - Space Complexity: O(1). ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํฌ๊ธฐ์ ์๊ด์์ด slow์ fast ๋ณ์๋ง ์ฌ์ฉ๋๋ฏ๋ก
22+ ์์ ๊ณต๊ฐ๋ง ์ฐจ์งํ๋ค.
23+ """
24+ slow , fast = head , head
25+
26+ while fast and fast .next :
27+ slow = slow .next
28+ fast = fast .next .next
29+
30+ if slow == fast :
31+ return True
32+
33+ return False
You canโt perform that action at this time.
0 commit comments