美文网首页程序员Swift - LeetCodeSwift in LeetCode
Swift - LeetCode - 删除排序链表中的重复元素

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

作者: 依赖糊涂 | 来源:发表于2019-03-03 17:57 被阅读6次

    题目

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

    问题:

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

    示例:

    示例 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 - 删除排序链表中的重复元素

        本文链接:https://www.haomeiwen.com/subject/ftrmuqtx.html