题目
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
问题:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例:
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->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 removeAllSameNode(_ l1 : SingNode?) -> SingNode? {
if l1?.nextNode == nil || l1 == nil {
return l1
}
let dummyNode = SingNode.init(value: 0)
dummyNode.nextNode = l1
var node = dummyNode
while node.nextNode != nil && node.nextNode?.nextNode != nil{
if node.nextNode?.value == node.nextNode?.nextNode?.value {
let value = node.nextNode?.value
while node.nextNode != nil && value == node.nextNode?.value {
node.nextNode = node.nextNode?.nextNode
}
} else {
node = node.nextNode!
}
}
return dummyNode.nextNode
}
网友评论