remove duplicates from sorted list II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
分析
比较cur和cur.next,删除当前节点cur,不动prev,否则移动prev。注意有个continue,处理连续不同dup的情况。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
boolean hasDup = false;
ListNode prev = dummy, cur = head;
while(cur != null){
hasDup = false;
while(cur != null && cur.next != null && cur.val == cur.next.val){
hasDup = true;
cur = cur.next;
prev.next = cur;
}
if(hasDup){
cur = cur.next;
prev.next = cur;
continue;//缺了这一行!!!
}
if(cur != null){
prev = prev.next;
cur = cur.next;
}
}
return dummy.next;
}
}
Last updated
Was this helpful?