<--- 리트코드 24. Swap Nodes in Pairs --->
# 문제. 연결 리스트를 입력받아 페어 단위로 스왑하라.
입력
1->2->3->4 |
출력
2->1->4->3 |
# 풀이
1. 값만 교환
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
32
33
|
from typing import List
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = None
def swap_pairs(head):
cur = head
while cur and cur.next:
cur.val, cur.next.val = cur.next.val, cur.val
cur = cur.next.next
return head
list1 = ListNode(1)
list2 = ListNode(2)
list3 = ListNode(3)
list4 = ListNode(4)
head = list1
list1.next = list2
list2.next = list3
list3.next = list4
head = swap_pairs(head)
while head:
print(head.val, end="")
if head.next:
print("->", end="")
head = head.next
|
cs |
2. 반복 구조로 스왑
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
32
33
34
35
36
37
38
39
40
41
42
|
from typing import List
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = None
def swap_pairs(head):
root = prev = ListNode(None)
prev.next = head
while head and head.next:
# b가 a(head)를 가리키도록 할당
b = head.next
head.next = b.next
b.next = head
# prev가 b를 가리키도록 할당
prev.next = b
# 다음번 비교를 위해 이동
head = head.next
prev = prev.next.next
return root.next
list1 = ListNode(1)
list2 = ListNode(2)
list3 = ListNode(3)
list4 = ListNode(4)
head = list1
list1.next = list2
list2.next = list3
list3.next = list4
head = swap_pairs(head)
while head:
print(head.val, end="")
if head.next:
print("->", end="")
head = head.next
|
cs |
3. 재귀 구조로 스왑
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
32
33
|
from typing import List
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = None
def swap_pairs(self, head):
if head and head.next:
p = head.next
# 스왑된 값 리턴 받음
head.next = self.swap_pairs(p.next)
p.next = head
return p
return head
list1 = ListNode(1)
list2 = ListNode(2)
list3 = ListNode(3)
list4 = ListNode(4)
head = list1
list1.next = list2
list2.next = list3
list3.next = list4
head = swap_pairs(head)
while head:
print(head.val, end="")
if head.next:
print("->", end="")
head = head.next
|
cs |
'Python' 카테고리의 다른 글
파이썬 알고리즘 인터뷰 - 19. 역순 연결 리스트 Ⅱ (0) | 2022.01.22 |
---|---|
파이썬 알고리즘 인터뷰 - 18. 홀짝 연결 리스트 (0) | 2022.01.22 |
파이썬 알고리즘 인터뷰 - 16. 두 수의 덧셈 (0) | 2022.01.20 |
파이썬 알고리즘 인터뷰 - 15. 역순 연결 리스트 (0) | 2022.01.19 |
파이썬 알고리즘 인터뷰 - 14. 두 정렬 리스트의 병합 (0) | 2022.01.17 |