问题描述
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 提示: 链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升序排列
首先需要排序的序列是: 一个 升序 的链表
意味着后面结点中存储的元素值 大于等于 前一个结点存储的元素值
所以我们在删除重复结点的时候只要据此进行判断即可
此外,我们还要注意一些特殊情况:序列中没有一个结点
需要针对这种情况加以判断!
实现代码
/* 判断是否存在结点 */
if(head == null){
return head;
}
ListNode ln = head;
while(ln.next != null){
/* 判断后面节点存储的的val 是否大于本结点的val值 */
if(ln.next.val > ln.val){
ln = ln.next;
continue;
}
/* 删除结点 */
ln.next = ln.next.next;
}
return head;
执行结果