82. 删除排序链表中的重复元素 II
题目
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
示例 1:
输入: head = [1,2,3,3,4,4,5]
输出: [1,2,5]
示例 2:
输入: head = [1,1,1,2,3]
输出: [2,3]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-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) {
ListNode pre = new ListNode(0,head);
ListNode p = pre;
ListNode q = head;
ListNode cur = pre;
while(q != null && q.next != null){
if(q.val == q.next.val){
int val = q.val;
while(q.next != null && val == q.next.val){
q = q.next;
if(q == null) break;
}
cur = q;
q = q.next;
cur.next = null;
p.next = q;
}
else{
p = q;
q = q.next;
}
}
return pre.next;
}
}