題目
刪除鏈表中等于給定值 val 的所有節(jié)點。
問題:
給定一個排序鏈表,刪除所有重復(fù)的元素,使得每個元素只出現(xiàn)一次。
示例:
示例 1:
輸入: 1->2->3->3->4->4->5,val = 1
輸出:2->3->3->4->4->5
示例 2:
輸入: 1->1->1->2->3,val = 2
輸出: 1->1->1->3
解題思路:
只需判斷節(jié)點的值是否與給出的值相等,刪除即可。不過需要考慮到,刪除頭結(jié)點的問題,需要一個頭指針來指向頭結(jié)點,所以設(shè)立dummy節(jié)點;還需知道,每個節(jié)點的前驅(qū),方便刪除后的連接。
代碼:
/**
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 removeCurrentValue(_ l1: SingNode?, value:Int) -> SingNode? {
if l1 == nil {
return nil
}
let dummyNode = SingNode.init(value: 0)
dummyNode.nextNode = l1
var node = dummyNode
while node.nextNode != nil {
if node.nextNode?.value == value {
node.nextNode = node.nextNode?.nextNode
}
if node.nextNode != nil {
node = node.nextNode!
}
}
return dummyNode.nextNode
}