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

示例 1:

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

示例 2:

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

分析:
为了方便只用了一个节点遍历,基本思想是当前节点 node 和其下一节点 node.next 的值比较,如果值相等,直接将下一节点的 next 改为当前节点的 next,从而把 node.next 这个节点给跳过了,由于 JVM 有 GC,所以搞定

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null)
            return head;
        ListNode node = head;
        while (node.next != null) {
            if (node.val == node.next.val)
                node.next = node.next.next;
            else
                node = node.next;
        }
        return head;
    }
}