링크드 리스트에서 두 개의 노드를 교체하는 것을 구현하는 문제이다.
리스트의 앞에서 k번째, 뒤에서 k번째의 노드를 교체해야 하는데, 리스트의 맨 앞에서부터
리스트를 순회하면서 앞에서 k번째, 뒤에서 k번째 노드의 포인터를 저장하고, 각 포인터에 저장된 값을
교환하는 식으로 구현하였다.
C++
더보기
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* swapNodes(ListNode* head, int k) {
ListNode* target1, *target2, *temp;
temp = head;
while(k > 0){
target1 = temp;
temp = temp -> next;
--k;
}
target2 = head;
while(temp != nullptr){
temp = temp -> next;
target2 = target2 -> next;
}
swap(target1 -> val, target2 -> val);
return head;
}
};
Python
더보기
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapNodes(self, head: ListNode, k: int) -> ListNode:
temp = head
while k > 0:
target1 = temp
temp = temp.next
k -= 1
target2 = head
while temp != None:
temp = temp.next
target2 = target2.next
target1.val, target2.val = target2.val, target1.val
return head
728x90
'Problem Solving > Leet Code' 카테고리의 다른 글
1723 Find Minimum Time to Finish All Jobs (0) | 2021.02.14 |
---|---|
1722 Minimize Hamming Distance After Swap Operations (0) | 2021.02.13 |
1720 Decode XORed Array (0) | 2021.01.29 |
239 Sliding Window Maximum (0) | 2021.01.15 |
1707 Maximum XOR With an Element From Array (0) | 2021.01.11 |