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; //返回结果 } } 有一个巧妙的方法是,先往链表前添加一个数,保证第一个不会出现重复