題目
刪除鏈表的倒數(shù)第N個節(jié)點
問題:
給定一個鏈表,刪除鏈表的倒數(shù)第 n 個節(jié)點鸠窗,并且返回鏈表的頭結(jié)點驰唬。
示例:
給定一個鏈表: 1->2->3->4->5, 和 n = 2.
當(dāng)刪除了倒數(shù)第二個節(jié)點后绊起,鏈表變?yōu)?1->2->3->5.
說明:
給定的 n 保證是有效的盈电。
進(jìn)階:
你能嘗試使用一趟掃描實現(xiàn)嗎蝴簇?
解題思路:
典型的利用雙指針法解題。
代碼:
/**
public class SingNode {
public var value : Int
public var nextNode: SingNode?
public init(value:Int) {
self.value = value
}
}
**/
func delegateNodeIndex(_ head : SingNode?,_ n:Int) -> SingNode? {
let dummyNode : SingNode = SingNode.init(value: 0)
dummyNode.nextNode = head
var prev:SingNode? = dummyNode
var post:SingNode? = dummyNode
for _ in 0..<n {
post = post?.nextNode
}
while post?.nextNode != nil {
post = post?.nextNode
prev = prev?.nextNode
}
prev?.nextNode = prev?.nextNode?.nextNode
return dummyNode.nextNode
}