Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
解题思路是设置一个是否含有重复元素的标志位,然后用双指针,一个进行移位,一个进行存储。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode p = head;
ListNode dummy = new ListNode(0);
ListNode q = dummy;
boolean flag = false;
while(p != null){
flag = false;
while(p.next != null && p.val == p.next.val){
p = p.next;
flag = true;
}
if(!flag){
q.next = p;
q = q.next;
}
p = p.next;
}
q.next = null;
return dummy.next;
}
}