题目:移除未排序链表中重复的结点.
节点定义:
class ListNode {
var value:String?
var next:ListNode?
init(value:String?) {
self.value = value
}
}
核心代码:
func deleteDuplitation(node:ListNode) {
var map:[String:Bool] = [ : ]
var head:ListNode? = node
var preNode:ListNode? = node
while head != nil {
let value:String = (head?.value!)!
if map.keys.contains(value) {
preNode?.next = head?.next
} else {
preNode = head
map[value] = true
}
head = head?.next
}
}
测试代码:
var listNodeManger:ListNodeManger = ListNodeManger()
for i in 0..<10 {
listNodeManger.appendToTail(value: "\(i)")
}
for i in 0..<3 {
listNodeManger.appendToTail(value: "\(i)")
}
listNodeManger.printListNode(headNode: listNodeManger.headNode!)
listNodeManger.deleteDuplitation(node: listNodeManger.headNode!)
print("删除重复结点")
listNodeManger.printListNode(headNode: listNodeManger.headNode!)
FlyElephant.png