题目描述:
给定一个已排序的链表的头 head ,
删除所有重复的元素,使每个元素只出现一次 。
返回 已排序的链表 。
测试用例:
示例1:
输入:head = [1,1,2]
输出:[1,2]
示例2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
-
链表中节点数目在范围 [0, 300] 内
-
-100 <= Node.val <= 100
-
题目数据保证链表已经按升序 排列
源代码:
递归思路:
public ListNode deleteDuplicates(ListNode head) {
//1:这种情况不可能有相同节点,直接返回
if (head == null || head.next == null) {
return head; }
//2:当前节点与下个节点一样
if (head.val == head.next.val) {
//3:将当前节点的下个节点跳过,指向递下下个归后的结果
head.next = deleteDuplicates(head.next.next);
//4:为了防止删除了下个节点,与下下个节点还是一样,继续递归,如[1,1,1]这种情况,跳过了第二个节点,还剩下[1,1]
return deleteDuplicates(head); }
//5:当前节点与下个节点不一样,继续递归下个节点,递归函数继续判断是否与下下个节点一样(见2))
deleteDuplicates(head.next);
return head;
}