删除排序链表中的重复元素--链表
今天我们开始另一模块的算法题,关于链表的操作. 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 }
结果
运行结果如下:
上面就是本题目的思路和代码,可以直接复制粘贴运行,希望对大家有所帮助!!!