【数据结构与算法】链表——删除排序链表中的重复元素

删除排序链表中的重复元素

LeetCode:删除排序链表中的重复元素

题目描述:

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

示例:

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

思想:

递归方法很巧妙,只需要三行代码。关键点在于,通过return来返回相同结点最右边的结点,达到删除目的。

代码

  • 普通循环(自己想到的)
public ListNode deleteDuplicates(ListNode head) {
    ListNode p =head;
    while(p!=null&&p.next!=null){
        if(p.next.val == p.val)
            p.next = p.next.next;
        else
            p=p.next;
    }
    return head;
}
  • 递归
public ListNode deleteDuplicates(ListNode head) {
    if(head==null||head.next==null) return head;
    head.next = deleteDuplicates(head.next);
    return head.val==head.next.val?head.next:head;
}

猜你喜欢

转载自www.cnblogs.com/buptleida/p/12711024.html