File tree Expand file tree Collapse file tree 2 files changed +69
-0
lines changed
find-minimum-in-rotated-sorted-array Expand file tree Collapse file tree 2 files changed +69
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int findMin (int [] nums ) {
3
+ // TC: O(log N)
4
+ // SC: O(1)
5
+ var left = 1 ; // N๋ฒ ํ์ ํด ์ด๋ฏธ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ผ ๊ฒฝ์ฐ 0์ผ๋ก ์์ํ๋ฉด ๋ฃจํ๊ฐ ์๋๋จ. 1๋ก ์์
6
+ var right = nums .length -1 ;
7
+
8
+ while (left <= right ) { // left๊ฐ right๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์๋๊น์ง
9
+ var mid = (left + right ) / 2 ;
10
+ if (nums [mid - 1 ] > nums [mid ]) { // mid - 1 ์์๊ฐ mid ๋ณด๋ค ๊ฐ์ด ํฌ๋ฉด ๋ณ๊ณก์ ์ ์ฐพ์ ๊ฒ. ๊ทธ๋๋ก ๋ฐํ
11
+ return nums [mid ];
12
+ }
13
+
14
+ if (nums [mid ] > nums [0 ]) { // ๋ณ๊ณก์ ์ด ์๋๊ณ , 0๋ฒ์งธ ์ธ๋ฑ์ค๋ณด๋ค mid ์์๊ฐ ๊ฐ์ด ํฌ๋ฉด ์ ๋ ฌ์ด ์ ๋์ด ์๋๊ฒ. ์ค๋ฅธ์ชฝ์ผ๋ก ํ์
15
+ left = mid + 1 ;
16
+ } else {
17
+ right = mid - 1 ;
18
+ }
19
+ }
20
+
21
+ return nums [0 ]; // N๋ฒ ํ์ ํด ์ด๋ฏธ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ผ ๊ฒฝ์ฐ 0๋ฒ์งธ ์ธ๋ฑ์ค ์์ ๋ฐํ
22
+ }
23
+ }
Original file line number Diff line number Diff line change
1
+ //Definition for singly-linked list.
2
+ class ListNode {
3
+ int val ;
4
+ ListNode next ;
5
+ ListNode (int x ) {
6
+ val = x ;
7
+ next = null ;
8
+ }
9
+ }
10
+
11
+ class Solution {
12
+ public boolean hasCycle (ListNode head ) {
13
+ // ํ์ด 1: Set์ ๊ฐ์ฒด๋ฅผ ์ง์ด ๋ฃ๊ณ , ์ฌ์ด์ฆ๊ฐ ์๋์ด๋๋ฉด ์ฌ์ดํด์ด ์๋ค๊ณ ํ๋จํ ์ ์๋ค
14
+ // TC: O(N)
15
+ // SC: O(N)
16
+ // Set<ListNode> set = new HashSet<>();
17
+ //
18
+ // while(head != null) {
19
+ // var before = set.size();
20
+ // set.add(head);
21
+ // var after = set.size();
22
+ // if (before == after) {
23
+ // return true;
24
+ // }
25
+ // head = head.next;
26
+ // }
27
+ //
28
+ // return false;
29
+
30
+ // ํ์ด 2: ๋๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํด ์ฒซ๋ฒ์งธ ํฌ์ธํฐ๋ ํ๋์ฉ, ๋๋ฒ์งธ ํฌ์ธํฐ๋ ๋๊ฐ์ฉ ์ํํ๋ค ๊ฒน์น๋ ๋ถ๋ถ์ด ์๊ธฐ๋ฉด ์ํ์ด๋ผ๊ณ ํ๋จํ ์ ์๋ค
31
+ // TC: O(N)
32
+ // SC: O(1)
33
+ var slow = head ;
34
+ var fast = head ;
35
+ while (fast != null && fast .next != null ) {
36
+ slow = slow .next ;
37
+ fast = fast .next .next ;
38
+
39
+ if (slow == fast ) {
40
+ return true ;
41
+ }
42
+ }
43
+
44
+ return false ;
45
+ }
46
+ }
You canโt perform that action at this time.
0 commit comments