File tree Expand file tree Collapse file tree 5 files changed +120
-0
lines changed Expand file tree Collapse file tree 5 files changed +120
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * 달레님 강의 참고
3+ * 아직 완벽하게 이해하지 못한 풀이,, 추가로 다시 확인 필요
4+ * 시간복잡도: O(n)
5+ * 공간복잡도: O(n)
6+ */
7+ class Solution {
8+ public TreeNode invertTree (TreeNode root ) {
9+ if (root == null ) return null ;
10+
11+ TreeNode temp = root .left ;
12+ root .left = root .right ;
13+ root .right = temp ;
14+
15+ invertTree (root .right );
16+ invertTree (root .left );
17+
18+ return root ;
19+ }
20+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * 순환 리스트
3+ * 달레님 강의 참고
4+ * 기존에 이해했던 Linked List 처럼 null이 되는 경우가 아니기 때문에 loop에 빠지지 않게 주의해야 한다.
5+ * 시간복잡도: O(n)
6+ * 공간복잡도: O(n)
7+ */
8+ class Solution {
9+ public boolean hasCycle (ListNode head ) {
10+ Set <ListNode > visited = new HashSet <>();
11+ while (head != null ) {
12+ if (visited .contains (head )) {
13+ return true ;
14+ } else {
15+ visited .add (head );
16+ head = head .next ;
17+ }
18+ }
19+
20+ return false ;
21+ }
22+ }
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public ListNode mergeTwoLists (ListNode list1 , ListNode list2 ) {
3+ if (list1 == null ) return list2 ;
4+ if (list2 == null ) return list1 ;
5+
6+ if (list1 .val < list2 .val ) {
7+ list1 .next = mergeTwoLists (list1 .next , list2 );
8+ return list1 ;
9+ } else {
10+ list2 .next = mergeTwoLists (list1 , list2 .next );
11+ return list2 ;
12+ }
13+ }
14+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * 시간복잡도: O(n)
3+ * -> 노드가 존재하지 않을때 까지 반복,,
4+ * 공간복잡도: O(1)
5+ * -> ListNode
6+ */
7+ class Solution {
8+ public ListNode reverseList (ListNode head ) {
9+ if (head == null || head .next == null ) {
10+ return head ;
11+ }
12+
13+ ListNode node1 = head ;
14+ ListNode node2 = node1 .next ;
15+ head .next = null ;
16+
17+ while (node1 != null && node2 != null ) {
18+ ListNode t = node2 .next ;
19+ node2 .next = node1 ;
20+ node1 = node2 ;
21+ node2 = t ;
22+ }
23+
24+ return node1 ;
25+ }
26+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * 시간복잡도: O(n)
3+ * -> 문자열 s의 길이에 따라 증가
4+ * 공간복잡도: O(n)
5+ * -> 문자열 s의 길이에 따라 stack의 공간 증가
6+ */
7+ class Solution {
8+ public boolean isValid (String s ) {
9+ char first = s .charAt (0 );
10+ if (s .length () == 1 || first == ')' || first == '}' || first == ']' ) return false ;
11+
12+ Stack <Character > stack = new Stack <>();
13+
14+ for (int i = 0 ; i < s .length (); i ++) {
15+ char c = s .charAt (i );
16+
17+ if (c == '(' || c == '{' || c == '[' ) {
18+ stack .push (c );
19+ continue ;
20+ }
21+
22+ if (stack .isEmpty ()) return false ;
23+
24+ if (c == ')' ) {
25+ Character pop = stack .pop ();
26+ if (pop != '(' ) return false ;
27+ } else if (c == '}' ) {
28+ Character pop = stack .pop ();
29+ if (pop != '{' ) return false ;
30+ } else if (c == ']' ) {
31+ Character pop = stack .pop ();
32+ if (pop != '[' ) return false ;
33+ }
34+ }
35+
36+ return stack .size () == 0 ;
37+ }
38+ }
You can’t perform that action at this time.
0 commit comments