题目
删除链表中等于给定值 val 的所有节点。
问题:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例:
示例 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
解题思路:
只需判断节点的值是否与给出的值相等,删除即可。不过需要考虑到,删除头结点的问题,需要一个头指针来指向头结点,所以设立dummy节点;还需知道,每个节点的前驱,方便删除后的连接。
代码:
/**
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
}
网友评论