Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- IAM
- FastAPI
- K8S
- EKS
- 쿠버네티스
- Kubernetes
- POD
- DevOps
- Django
- terraform
- Service
- dockerfile
- asgi
- docker
- IAC
- ansible
- Deployment
- 자바스크립트
- YAML
- github
- leetcode
- event loop
- WSGI
- AWS
- ebs
- elasticsearch
- EC2
- asyncio
- Python
- intervals
Archives
- Today
- Total
궁금한게 많은 개발자 노트
[ leetcode ] 24. Swap Nodes in Pairs 본문
해당 문제는 Recursion을 사용하여 재귀적으로 같은 문제를 해결할 수 있는지를 판단하는 문제로 보였습니다.
Linked List가 주어졌을 때, 서로 인접한 두개의 노드의 순서가 변경된 결과를 반환하는 문제입니다.
ex) 1 -> 2 -> 3 -> 4
2 -> 1 -> 4 -> 3
작은 단위로 쪼개보면 인접한 두개의 노드가 서로 자리를 바꾸는 연산이 반복해서 일어나므로 재귀적으로 해결한다면 다음과 같은 코드로 풀이할 수 있습니다.
첫 번째 노드가 current, 두 번째 노드가 next라고 한다면 결과적으로 next->next는 current를 가리키고, current->next는 다음 두 노드의 변경된 첫 번째 노드를 가리켜야 합니다.
다음 두 노드의 결과는 swapPairs(next->next)가 되므로 아래 코드가 나오게 됩니다.
/**
* 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* swapPairs(ListNode* head) {
if (head == NULL || head->next == NULL) return head;
ListNode* current = head;
ListNode* next = current->next;
current->next = swapPairs(next->next);
next->next = current;
return next;
}
};
'Algorithm' 카테고리의 다른 글
[ leetcode ] 21. Merge Two Sorted Lists (0) | 2023.07.07 |
---|---|
[ leetcode ] 104. Maximum Depth of Binary Tree (0) | 2023.07.07 |
[ leetcode ] 859. Buddy Strings (0) | 2023.07.07 |
[ leetcode ] 112. Path Sum (0) | 2023.05.09 |
[ leetcode ] 78. Subsets (0) | 2023.05.02 |
Comments