[알고리즘] Leetcode_24_Swap_Nodes_in_Pairs

jeongjwon·2023년 3월 29일
0

알고리즘

목록 보기
14/48

Problem

Solve

public static ListNode swapPairs(ListNode head) {
	if(head == null || head.next == null) return head;
    //바꿀 노드가 없다면 그 자신을 리턴
    
    ListNode prev = head; //1 2 3 4
    ListNode cur = head.next; //2 3 4
    ListNode next = head.next.next;// 3 4
    
    head = cur;
    head.next = prev;
    head.next.next = swapPairs(next);
    
    return head;
}

우리가 바꾸어야 하는 것은 현재와 다음 노드를 바꾸는 것이다.
바꾸기 전에 해야하는 것은 head 노드를 가지고 변수들을 할당하는 것이다.
head, head.next 를 바꾸어야 하고 head.next.next 로 이동해야한다.

위의 예인 1->2->3->4 를 보면
prev, cur, next 를 각각 할당해주고
바꾼 후의 head는 2가 되어야 하므로 cur,
head.next 는 1로 시작되어야 하므로 prev,
head.next.next 는 3->4 에서 swap 을 해주어야 하는 노드의 값이므로 재귀가 나타난다.

아무리 봐도 적응이 안되는 재귀와 한창 c 주소 공부할 때의 next ,,,

0개의 댓글