- 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
解题思路
- 创建两个节点,一个返回时使用,另一个用于第一次操作
- 遍历时,取出前一个节点和操作的下一个节点,
- 交换两个节点的 next
- 连接前一个节点和操作的下一个节点
- 下移当前节点和前一个节点
实现
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
|
var swapPairs = function(head) { let res = new ListNode() res.next = head let pre = res let chain = res.next while( chain && chain.next ){ let next = chain.next let nextNext = next && next.next pre.next = next chain.next = nextNext next.next = chain pre = chain chain = nextNext } return res.next };
|