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

题目

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

问题:

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

示例:

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