题目:
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
1
#
Definition for singly-linked list.
2
#
class ListNode:
3
#
def __init__(self, x):
4
#
self.val = x
5
#
self.next = None
6
7
class
Solution:
8
#
@param a ListNode
9
#
@return a ListNode
10
def
swapPairs(self, head):
11
if head is None or head.next is None:
12return head
1314 dummyhead = ListNode(0)
15 dummyhead.next = head
1617 pre = dummyhead
18 curr = head
19while curr isnot None and curr.next isnot None:
20 tmp = curr.next
21 curr.next = tmp.next
22 tmp.next = pre.next
23 pre.next = tmp
24 pre = curr
25 curr = curr.next
26return dummyhead.next
思路:
基本的链表操作。
需要注意的是while循环的判断条件:先判断curr不为空,再判断curr.next不为空。
这种and判断条件具有短路功能,如果curr为空就不会进行下一个判断了,因此是安全的
原文:http://www.cnblogs.com/xbf9xbf/p/4214359.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!