题目描述:
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.
思路:
思维有点僵化了,哈哈哈,一直想着插入的方法来解决问题。根本不需要新建一个链表,直接在原链表上进行操作就行了。
我的代码:
def swapPairs(head):
"""
:type head: ListNode
:rtype: ListNode
"""
dummy = p0 = ListNode(0)
dummy.next = head
while p0.next and p0.next.next:
p1, p2 = p0.next, p0.next.next
p0.next, p1.next, p2.next = p2, p2.next, p1
p0 = p0.next.next
return dummy.next
学到:
- 有些问题没必要非要往之前学过,做过的问题上面靠,有的时候换一个新的思路也不错。