83.删除排序链表中的重复元素 - 图1

1.题目

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

示例:

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

2.思路

首先我们先确定边缘条件,当传入的ListNode为null,直接返回null;当ListNode.next为null时,直接返回head(已处理完);

然后我们来比较head的当前值与下一个节点的值;若head的当前值与下一节点的值相等,则回调该方法,入参为head的下一个节点,将返回的值赋予当前head;若不相等,则将返回的值赋予head的下一个节点。

class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null) {
            return null;
        }
        if (head.next == null) {
            return head;
        }
        if (head.val == head.next.val) {
            head = deleteDuplicates(head.next);
        } else {
            head.next = deleteDuplicates(head.next);
        }
        return head;
    }
}