题解 | 删除有序链表中重复的元素-II
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ //122 public ListNode deleteDuplicates (ListNode head) { if (head==null){ return null; } //给head增加一个头结点 ListNode dummy = new ListNode(0); dummy.next = head; // write code here ListNode pre = dummy; ListNode cur = head; float value; ListNode m; while(cur!=null&& cur.next!=null){ //记录这个点点的值,然后去找下一个不相等的节点 //如果有重复节点的情况 if(cur.val==cur.next.val){ value = cur.val; m = cur.next; while(m!=null && m.val==value){ m = m.next; } pre.next = m; cur = m; }else{ System.out.println(cur.val); cur = cur.next; System.out.println(cur.val); pre = pre.next; System.out.println(pre.val); } } return dummy.next; } } // 1.如果需要用到pre指针,可以增加虚拟头结点 2.如果写完代码报错,记得检测指针的更新,尤其是两个循环的情况下,每个循环每个指针都要认真看一遍