您的位置:首页 > Web前端 > Node.js

【Leetcode】【python】Swap Nodes in Pairs

2017-09-05 06:03 507 查看

题目大意

交换链表中相邻的两个元素。

注意第一个节点与第二个节点要交换位置,而第二个节点不用与第三个节点交换位置。

注意点:

不允许修改节点的值

只能用常量的额外空间

解题思路

该题费脑,绕来绕去的指向,这个解读比较清晰

来自:

https://shenjie1993.gitbooks.io/leetcode-python/024%20Swap%20Nodes%20in%20Pairs.html

比较常见的链表操作。下面看一下典型情况,如要交换链表中A->B->C->D中的B和C需要做如下操作:

将A指向C

将B指向D

将C指向B

在头节点之前加一个假节点就可以使所有的交换都符合上面的情况。

代码

class Solution(object):
def swapPairs(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = ListNode(-1)
prev.next = head
temp = prev
while temp.next and temp.next.next:
node1 = temp.next  # A
node2 = temp.next.next  # B
temp.next = node2  # A->C
node1.next = node2.next  # B->D
node2.next = node1  # C->B?
temp = temp.next.next  # 跳过两个
return prev.next


总结

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python leetcode