题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解题思路
- 遍历链表,如果下一个节点与该节点值相同,将该节点的next指向下下个
- 要注意判断下一个节点是否为空节点
- 注意循环遍历当前节点,后边相同的删除干净再下一步
代码实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteDuplicates(head *ListNode) *ListNode {
if head == nil {
return head
}
cur := head
for cur != nil && cur.Next != nil {
for cur.Next != nil && cur.Val == cur.Next.Val {
cur.Next = cur.Next.Next
}
cur = cur.Next
}
return head
}