我以前是随机刷的,24以前的题目都做了,搬家没来得及搬过来,之后的全在CSDN更新
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list’s nodes, only nodes itself may be changed.
Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
思路
每次都在重复做一个事情,交换相邻的两个节点
所以可以用迭代的思想解决,
在交换完毕当前的两个节点之后,
对下一个节点调用自身即可
第一个元素用first表示,第二个用second表示
那么需要完成的操作是:
second.next = first
first.next = second.next交换完成的
最后第二个元素变成了表头,返回即可
code
class Solution:
def swapPairs(self, head):
# 出口
if not head or not head.next:
return head
first = head
second = head.next
first.next = self.swapPairs(second.next)
second.next = first
return second