代码随想录算法训练营第四天|24. 两两交换链表中的节点
链表没有学好,写了一小时才写出来
有几个心得:
1. 不存在指针被复制之后就是地址完全被拷贝了,考虑的有点多
2. current.next = right这句话完全忘记加了,debug的主要时间都在这,导致一直出的[1,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: Optional[ListNode]) -> Optional[ListNode]:
dummyhead = ListNode(next = head)
current = dummyhead
if current.next == None:
return current.next
while current.next != None:
if current.next.next:
left = current.next
right = current.next.next
if current == dummyhead:
dummyhead.next = current.next
print("left.val,",left.val)
print("right.val,",right.val)
print("current.val,",current.val)
left.next = right.next
# print("current.val,",current.val)
right.next = current.next
# print("current.val,",current.val)
# print("current.next.val,",current.next.val)
current.next = right
current = current.next.next
print("left.val,",left.val)
print("right.val,",right.val)
print("current.val,",current.val)
print("dummyhead.next.val,",dummyhead.next.val)
else:
break
return dummyhead.next
浙公网安备 33010602011771号