题目:
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4
, you should return the list as 2->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.
代码:oj 测试通过 Runtime: 42 ms
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
# @param a ListNode
# @return a ListNode
def swapPairs(self, head):
if head is None or head.next is None:
return head dummyhead = ListNode(0)
dummyhead.next = head pre = dummyhead
curr = head
while curr is not None and curr.next is not None:
tmp = curr.next
curr.next = tmp.next
tmp.next = pre.next
pre.next = tmp
pre = curr
curr = curr.next
return dummyhead.next
思路:
基本的链表操作。
需要注意的是while循环的判断条件:先判断curr不为空,再判断curr.next不为空。
这种and判断条件具有短路功能,如果curr为空就不会进行下一个判断了,因此是安全的