<Medium> Swap Nodes in Pairs (LeetCode : C#)

이도희·2023년 4월 6일
0

알고리즘 문제 풀이

목록 보기
49/185

https://leetcode.com/problems/swap-nodes-in-pairs/

📕 문제 설명

연결 리스트 주어질 때 모든 인접한 두 노드 서로 바꾼 후 head 반환하기
(list node의 값 수정하지 않고 node자체를 바꾸는 식으로 풀어야함)

  • Input
    연결 리스트 정보
  • Output
    swap된 결과

예제

풀이

현재랑 다음거 swap하는데 prevNode로 이전거 기록하면서 이전거의 다음 정보도 같이바꿔주는게 핵심 (즉, dummy node 생성해서 이전 연결 정보 갱신해야하는 부분!)

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int val=0, ListNode next=null) {
 *         this.val = val;
 *         this.next = next;
 *     }
 * }
 */
public class Solution {
    public ListNode SwapPairs(ListNode head) {
        
        if (head == null || head.next == null) return head;

        ListNode prevNode = new ListNode(0);
        ListNode currentNode = head;
        ListNode nextNode = head.next;
        head = head.next;

        while(nextNode != null)
        {
            currentNode.next = nextNode.next;
            nextNode.next = currentNode;
            prevNode.next = nextNode;
            prevNode = currentNode;
            currentNode = currentNode.next;
            if (currentNode == null) return head;
            nextNode = currentNode.next;
        }

        return head;
        
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글