'파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀
문제 👉 <Swap Nodes in Pairs - LeetCode>
1. 문제 (페어의 노드 스왑)
연결 리스트를 입력받아 페어(pair) 단위로 스왑하라.
2. 풀이
반복문
을 이용한 풀이재귀
를 이용한 풀이
3. 코드
- 반복을 이용한 풀이
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if not head or not head.next:
return head
root = pre = ListNode(0)
while head and head.next: # (1->2->3)
temp = head.next
# swap (1->2 => 2->1)
head.next, temp.next = temp.next, head
# pre (0->2->1)
pre.next = temp
# head (3) pre (1)
head, pre = head.next, pre.next.next
return root.next
- 재귀를 이용한 풀이
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if head and head.next: # (1->2->3->4)
node = head.next # node (2)
node.next, head = head, node.next # head (2->1)
node.next.next = self.swapPairs(head) # node (1->4->3)
return node
return head
- 결과 :
방식 | Status | Runtime | Memory | Language |
---|---|---|---|---|
반복문 | [Accepted] | 32 ms | 14.2 MB | python3 |
재귀 | [Accepted] | 32 ms | 14.1 MB | python |
References
🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋
'Coding Test > LeetCode' 카테고리의 다른 글
[LeetCode] 92. Reverse Linked List II [Python(파이썬)] (0) | 2021.11.23 |
---|---|
[LeetCode] 21. Merge Two Sorted Lists [Python(파이썬), JAVA(자바)] (0) | 2021.11.23 |
[LeetCode] 2. Add Two Numbers [Python(파이썬)] (0) | 2021.11.23 |
댓글