Swift - LeetCode - 删除排序链表中的重复元素 II

题目

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

问题:

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例:

示例 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
    }
  
    

你可能感兴趣的:(Swift - LeetCode - 删除排序链表中的重复元素 II)