0%

24. Swap Nodes in Pairs

https://leetcode.com/problems/swap-nodes-in-pairs/description/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
def swap(prev):
p=prev.next
if prev.next is None or prev.next.next is None:
return None
elif prev.next and prev.next.next:
p=prev.next
q=prev.next.next
prev.next=p.next
p.next=q.next
q.next=p
return p
dummy=ListNode(-1,head)
prev=dummy
while prev:
prev=swap(prev)
return dummy.next

The simplest solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head:
return None
A=[]
p=head
while p:
A.append(p)
p=p.next

for i in range(1,len(A),2):
A[i],A[i-1]=A[i-1],A[i]
dummy=ListNode(-1)
p=dummy
for i in range(len(A)):
p.next=A[i]
p=p.next
A[-1].next=None
return dummy.next