Daily LeetCode Challenge - 24. Swap Nodes in Pairs

Min Young Kim·2023년 5월 16일
0

algorithm

목록 보기
148/198

Problem From.

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

오늘 문제는 linked list 가 주어졌을때, 각각의 첫번째와 두번째를 바꾸고, 세번째와 네번째의 노드를 바꾸는 작업을 반복하여 반환하는 문제였다.

linked list 의 노드를 계속 관리해나가는게 관건인 문제였는데, 먼저 노드의 제일 앞에 dummy 노드를 만들어두고, 거기에 head 를 붙여둔다. 그리고 first 와 second 노드를 만들어서 head 노드와 그 다음 노드를 넣어두고 dummy 노드 뒤에 붙인다음 현재 노드인 curr 를 갱신해준다.
위 작업을 반복하여 마지막에 dummy.next 를 통해서 head 를 가져온다.

/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
class Solution {
    fun swapPairs(head: ListNode?): ListNode? {
        
        if(head?.next == null) return head
        
        var answer : ListNode? = ListNode(0)
        answer?.next = head
        var curr : ListNode? = answer
        
        while(curr?.next != null && curr?.next?.next != null) {
            var first : ListNode? = curr?.next
            var second: ListNode? = curr?.next?.next
            curr?.next = second
            first?.next = second?.next
            second?.next = first
            curr = curr?.next?.next
        }
        
        return answer?.next
        
    }
}
profile
길을 찾는 개발자

0개의 댓글