删除排序链表中的重复元素
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;
}