题目
给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
样例
给出 1->2->3->3->4->4->5->null,返回 1->2->5->null
给出 1->1->1->2->3->null,返回 2->3->null
解题
记录相同个数
一个相同的保存,多个的跳过
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param ListNode head is the head of the linked list
* @return: ListNode head of the linked list
*/
public static ListNode deleteDuplicates(ListNode head) {
// write your code here
ListNode newHead = new ListNode(0);
if(head ==null || head.next ==null)
return head;
ListNode cur = newHead;
ListNode prev = head;
while(head!=null){
ListNode p = head;
int count = 0;// 记录相同结点的个数
while(p!=null && p.val == head.val){
p = p.next;
count++;
}
if(count==1){ // 1 说明就一个
cur.next = head;
cur = cur.next;
head = head.next;
}else
head = p;
}
cur.next =null;// 断开后面的结点
return newHead.next;
}
}