文章目录
- 题目描述
- 方法一 暴力法
- 方法二 递归法
- 参考文献
题目描述
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列
方法一 暴力法
注意:这里应该不要被题目误导了,这里的head是链表的名字,并不意味这就一定是代表这个链表带了一个头结点,所以得分情况讨论一下,包括下面的递归法也是.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
//此处值得注意的是不要写成head.next,因为有可能传入的是一个空链表,不然会报空指针异常的错误
ListNode temp=head;
while(temp!=null){
if(temp.next!=null&&temp.next.val==temp.val){
temp.next=temp.next.next;
}else{
temp=temp.next;
}
}
return head; //此处值得注意的是不要写成head.next,因为有可能传入的是一个空链表,
}
}
方法二 递归法
递归相比于前一种方法就比较耗时了.
参考文献
暴力法参考文献
https://leetcode.cn/problems/remove-duplicates-from-sorted-list/solution/dong-hua-yan-shi-83-shan-chu-pai-xu-lie-lhuvr/
递归参考文献
https://leetcode.cn/problems/remove-duplicates-from-sorted-list/solution/hua-jie-suan-fa-83-shan-chu-pai-xu-lian-biao-zhong/