-
[linked list] swap nodes in pairsAlgorithm/LeetCode 2025. 5. 4. 11:45
✅ Problem
https://leetcode.com/problems/swap-nodes-in-pairs/description/
✅ Approach & Solution
방식)
더보기아래 작업을 하나의 사이클로 수행
- ex) dummy -> 노드1 -> 노드2 -> 노드3 -> 노드4
- 패턴화 시키기 위해 dummy 노드 추가
- 노드1과 노드2 swap
- dummy가 노드2를 가리키도록 업데이트
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode swapPairs(ListNode head) { ListNode dummy = new ListNode(0, head); ListNode prev = dummy; // swap 대상 노드의 이전 노드 ListNode cur = head; // swap 대상 노드 while (cur != null && cur.next != null) { ListNode nextPairNode = cur.next.next; // 다음 swap 대상 노드 저장 ListNode second = cur.next; // 노드2 저장 second.next = cur; // 노드2 -> 노드1 연결 cur.next = nextPairNode; // 노드1 -> 노드3 연결 prev.next = second; // swap 대상 노드의 이전 노드 -> 노드2 연결 prev = cur; cur = nextPairNode; } return dummy.next; } }
'Algorithm > LeetCode' 카테고리의 다른 글
[linked list] add two numbers (0) 2025.04.20 [linked list] reverse linked list (0) 2025.04.20 [hash] jewels and stones (0) 2025.04.08 [array] best time to buy and sell stock 2 (0) 2025.04.07 [array] maximum product subarray (0) 2025.04.06 - ex) dummy -> 노드1 -> 노드2 -> 노드3 -> 노드4