using System;
using System.Collections.Generic;
/*
public class ListNode
{
public int val;
public ListNode next;
public ListNode (int x)
{
val = x;
}
}
*/
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
ListNode ahead=new ListNode(-1);
ahead.next=head;
ListNode cur=ahead;
while(cur.next!=null && cur.next.next!=null)
{
if(cur.next.val==cur.next.next.val)
{
int num=cur.next.val;
while(cur.next!=null && cur.next.val==num)
cur.next=cur.next.next;
}
else{
cur=cur.next;
}
}
return ahead.next;
// ListNode* deleteDuplicates(ListNode* head) {
// ListNode* dummp = new ListNode(-1);
// dummp->next = head; //空节点插入链表头部
// ListNode* p = dummp;
// while(p->next && p->next->next){ //每次都是2个节点判断
// if(p->next->val == p->next->next->val){ //存在重复节点
// int num_flag = p->next->val; //记录第一个重复节点的值
// while(p->next && p->next->val == num_flag) //循环遍历后续节点的值,并与记录的节点值比较,相同则逐个删除
// p->next = p->next->next;
// }else //本轮不存在重复节点,值链表指针后移
// p = p->next;
// }
// return dummp->next; //返回结果
}
}
有一个巧妙的方法是,先往链表前添加一个数,保证第一个不会出现重复