1. 题目描述
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表
- 示例 1
输入:head = [1,1,2]
输出:[1,2]
- 示例 2
输入:head = [1,1,2,3,3]
输出:[1,2,3]
2. 解题思路
- 可以借鉴 82 删除排序链表中的重复元素 II 解题经验
/**
* 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 (null == head|| null == head.next) {
return head;
}
ListNode result = new ListNode(-1, head);
ListNode current = result;
int value = -9999;
while (head != null) {
// head.val == value 用于判断后续
if (head.val == value) {
// current 保存的是上一次校验不重复的结点
current.next = null;
} else {
value = head.val;
current.next = head;
current = head;
}
head = head.next;
}
return result.next;
}
}