码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-11-25 15:18:23      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:输出   lock   public   结构   color   display   node   关于   val   

今天我们开始另一模块的算法题,关于链表的操作. Let‘s do it !!!

题目

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

示例1

输入: 1->1->2
输出: 1->2

示例2

输入: 1->1->2->3->3
输出: 1->2->3

 

思想

  • 首先我们定义好节点结构,包括节点值、指向下一个节点的指针,以及初始化函数
  • 定义current指针指向头节点,以及定义的nextPointer指针指向头节点的下一个元素
  • 只要nextPointer不为空,继续循环
  • 如当前元素!=nextPointer.val 则将current的下一个指针指向nextPointer,并且将current向后移动一个位置
  • 如果相等,说明nextPointer指向的要往后移动,而current不需要动

 

代码

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? {
    var current = head
    var nextPointer = head?.next
    current?.next = nil
    while nextPointer != nil {
        if current?.val == nextPointer?.val {
            nextPointer = nextPointer?.next
        } else {
            current?.next = nextPointer
            current = current?.next
            nextPointer = current?.next
            current?.next = nil //清楚野指针
        }
    }
    return head
}

 

结果

运行结果如下:

技术图片

技术图片

上面就是本题目的思路和代码,可以直接复制粘贴运行,希望对大家有所帮助!!!

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

标签:输出   lock   public   结构   color   display   node   关于   val   

原文地址:https://www.cnblogs.com/guohai-stronger/p/11926125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!