题目
删除排序链表中的重复元素
问题:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例:
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解题思路:
移除有序链表中的重复项需要定义个指针指向该链表的第一个元素,然后第一个元素和第二个元素比较,如果重复了,则删掉第二个元素,如果不重复,指针指向第二个元素。这样遍历完整个链表,则剩下的元素没有重复项。
代码:
/**
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 removeSameNode(_ l1 : SingNode?) -> SingNode? {
if l1 == nil || l1?.nextNode == nil {
return l1
}
var tempNode = l1
while tempNode != nil && tempNode?.nextNode != nil {
if tempNode?.value == tempNode?.nextNode?.value {
let nextNode = tempNode?.nextNode
tempNode?.nextNode = nextNode?.nextNode
}
tempNode = tempNode?.nextNode
}
return l1
}