Swap Nodes in Pairs
题目描述:给定一个链表,反转每两个节点 思路:首先需要对链表的结构非常熟悉,python对于链表的实现和表示十分简洁,拿到题目下意识会去思考关于链表的反转,需要改变每一个节点的指向,但是需要控制每两个节点进行反转,需要递归,一时半会还想不到如何递归。后来发现其实不需要走改变节点指向这一种思路,可以交换当前节点和下一个节点的值即可。code: # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def swap(self, prev: ListNode, next_: ListNode) -> ListNode: prev.val, next_.val = next_.val, prev.val return next_ def swapPairs(self, head: ListNode) -> ListNode: cur = next_ = head while cur and cur.next: prev = cur next_ = cur.next # 此处移动两个节点 cur = self.swap(prev, next_) cur = cur.next return head 总结:交换值的方法虽然可以解决题目,但是如果要反转 K 个节点,就不能无法交换了,需要对链表进行反转递归,关于递归还是掌握不太好,面对比较复杂的问题,一时半会不知道如何下手,这方面需要加强训练。