16.删除排序链表中的重复元素
/*给定一个已排序的链表的头 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) {
//用虚拟头节点会方便得多,不用再创建一个节点来维护实际的头节点
ListNode dummyNode = new ListNode(-1);
dummyNode.next = head;
//使用双指针
ListNode cur = head;
ListNode pre = head;
while (cur != null){
//该题目已经是升序排列,所以相同的数据在一起
while (cur != null && cur.val == pre.val){
cur = cur.next;
}
//删除重复值的节点
pre.next = cur;
//更新pre节点
pre = cur;
}
//返回实际的头节点
return dummyNode.next;
}
}