LeetCode #24 Swap Nodes in Pairs
Question
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given1->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.
Solution
Approach #1
/** * Definition for singly-linked list. * public class ListNode { * public var val: Int * public var next: ListNode? * public init(_ val: Int) { * self.val = val * self.next = nil * } * } */class Solution { func swapPairs(_ head: ListNode?) -> ListNode? { let dummy = ListNode(0) dummy.next = head var p1: ListNode? = dummy var p2 = p1?.next while p2?.next != nil { p1?.next = p2?.next p2?.next = p2?.next?.next p1?.next?.next = p2 p1 = p1?.next?.next p2 = p1?.next } return dummy.next }}
Time complexity: O(n).
Space complexity: O(1).
转载请注明出处: