Swift - LeetCode - 分隔連結串列
題目
分隔連結串列
問題:
給定一個連結串列和一個特定值 x,對連結串列進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。
示例:
示例 1: 輸入: head = 1->4->3->2->5->2, x = 3 輸出: 1->2->2->4->3->5
解題思路:
這個題一直把我搞在蒙圈的路上、不知道有沒有人和我一樣總認為 value =4的節點要放到value =3節點後面。
程式碼:
/** public class SingNode { public var value : Int public var nextNode: SingNode? public init(value:Int) { self.value = value } } extension SingNode : CustomStringConvertible { public var description: String { var string = "\(value)" var node = self.nextNode while node != nil { string = string + " -- " + "\(node!.value)" node = node?.nextNode } return string } } **/ func partition(_ head: SingNode?, _ x: Int) -> SingNode? { let prevDummy = SingNode.init(value: 0) var prev = prevDummy let postDummy = SingNode.init(value: 0) var post = postDummy var node = head while node != nil { if node!.value < x { prev.nextNode = node prev = node! } else { post.nextNode = node post = node! } node = node!.nextNode } post.nextNode = nil prev.nextNode = postDummy.nextNode return prevDummy.nextNode }