一、题目描述
存在一个按升序排列的链表,给你这个链表的头节点 head
,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
二、解题思路
借用数据结构中在链表中删除元素的思想,在本题中给定的链表是排好序的,所以重复的元素在链表中肯定是连续的。声明一个移动指针cur用来遍历有序链边,当cur.val=cur.next.val,只需要将cur的next指针指向cur的next的next就完成了删除的目的。
三、代码演示
class Solution {
public ListNode deleteDuplicates(ListNode head) {
//特殊情况判断
if(head == null){
return head;
}
//指定cur指针指向头部head
ListNode cur =head;
while(cur!=null && cur.next!=null){
//当前指针指向的值如果与该值的下一个值相等,将当前值的next的next赋值给next
if(cur.val==cur.next.val){
cur.next = cur.next.next;
} else{
//如果当前指针的下一个值与当前值不相等,则指针向后移一位
cur = cur.next;
}
}
return head;
}
}