【LeetCode with Python】 24. Swap Nodes in Pairs
题目
原题页面:https://leetcode.com/problems/swap-nodes-in-pairs/
本文地址:http://leetcode.xnerv.wang/swap-nodes-in-pairs/
题目类型:Medium
难度评价:Linked List
类似题目:(H) Reverse Nodes in k-Group
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given1->2->3->4
, you should return the list as2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
分析
交换单链表中每一对相邻的奇偶数下标的元素,注意防止链表长度可能是奇数,即不要忘记检查second_node是否为None。
代码
class Solution:
# @param a ListNode
# @return a ListNode
def swapPairs(self, head):
if None == head:
return head
new_head = ListNode(0)
new_head.next = head
last_node = new_head
while True:
first_node = last_node.next
if None == first_node:
break
second_node = first_node.next
if None == second_node:
break
last_node.next, first_node.next, second_node.next, last_node = second_node, second_node.next, first_node, first_node
return new_head.next