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

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

作者: 依赖糊涂 | 来源:发表于2019-03-03 15:52 被阅读4次

    题目

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

    问题:

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

    示例:

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

    相关文章

      网友评论

        本文标题:Swift - LeetCode - 删除排序链表中的重复元素

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