标签:else 插入 col func 虚拟 span height 编程 block
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例1
输入: 1->2->3->3->4->4->5 输出: 1->2->5
示例2
输入: 1->1->1->2->3 输出: 2->3
public class ListNode { public var val: Int? public var next: ListNode? public init(_ val: Int){ self.val = val self.next = nil } } func deleteDuplicates(_ head: ListNode?) -> ListNode? { if head?.next == nil { return head } var newHead: ListNode? //建立新链表的头部节点 var newCurrent: ListNode? //新链接当前的值 var pre: ListNode? //原链表的虚拟头节点 var current: ListNode? = head //原链表当前访问的节点,默认第一个为头节点 var nextCurrent: ListNode? = head?.next while current != nil { if pre?.val != current?.val, current?.val != nextCurrent?.val { //判断是否是新链表的第一个元素 if newHead == nil { newHead = current newCurrent = current } else { newCurrent?.next = current newCurrent = current } } pre = current current = nextCurrent nextCurrent = current?.next } newCurrent?.next = current return newHead }
上面代码有注释
大家可以在playground中敲击代码,提高自己的编程能力!!!
标签:else 插入 col func 虚拟 span height 编程 block
原文地址:https://www.cnblogs.com/guohai-stronger/p/11927869.html