Swift - LeetCode - 旋轉連結串列
題目
旋轉連結串列
問題:
給定一個連結串列,旋轉連結串列,將連結串列每個節點向右移動k個位置,其中k是非負數。
示例:
輸入:1->2->3->4->5->null 和 k=2 輸出:4->5->1->2->3->null
程式碼:
/** 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 rotateRightNode(_ l1:SingNode?, _ right:Int) -> SingNode? { if l1 == nil { return nil } var total = 0 var p = l1 var last = p while p != nil { total += 1 last = p p = p?.nextNode } let rightIndex = right%total if rightIndex == 0{ return l1 } let dummyNode = SingNode.init(value: 0) dummyNode.nextNode = l1 p = dummyNode for _ in 0..<rightIndex { p = p?.nextNode } let ret = p?.nextNode p?.nextNode = nil last?.nextNode = dummyNode.nextNode return ret }