题目描述
给定一个已排序的链表的头head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
- 链表中节点数目在范围
[0, 300]
内 -100 <= Node.val <= 100
- 题目数据保证链表已经按升序 排列
思路
- 先排除空链表,是空链表,就返回空链表就行了。
- 不是空链表就让一个临时指针temp指向该链表
- 如果当前结点的值等于下一结点的值,就让当前结点指向下下个节点
- 如果不相等,temp就后移
- 重复步骤3,4,直到当前节点到达尾结点
图解
题解
/**
* 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) {
if(head==null){
return head;
}
ListNode temp = head;
while(temp.next!=null){
if(temp.val==temp.next.val){
temp.next = temp.next.next;
}else{
temp = temp.next;
}
}
return head;
}
}