【python3】leetcode 24. Swap Nodes in Pairs (Medium)
阿新 • • 發佈:2019-01-08
24. Swap Nodes in Pairs (Medium)
Given a linked list, swap every two adjacent nodes and return its head.
Example:
Given1->2->3->4
, you should return the list as2->1->4->3
.Note:
- Your algorithm should use only constant extra space.
- You may not modify the values in the list's nodes, only nodes itself may be changed.
蠢辦法用n來標記有沒有一對,
n = 1時移動到一對中的第一個,記錄一下pre
n = 2時 要開始swap了,注意有3個next要變,一個是node.next = pre,pre.next = node.next, ppre.next = node可以畫圖理解一下,ppre是這一對之前的node,pre是這一對裡第一個node,node是這一對裡第二個node
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def swapPairs(self, head): """ :type head: ListNode :rtype: ListNode """ n = 1 if not head:return [] if not head.next:return head else:cphead = head.next node = head ppre = None while(node): if n == 1: pre = node node = node.next n = 2 elif n == 2: aft = node.next node.next = pre pre.next = aft if ppre != None:ppre.next = node n = 1 ppre = pre node = aft return cphead