题解 | #删除链表中重复的结点#
删除链表中重复的结点
https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef
import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode deleteDuplication(ListNode pHead) { /* 1. 增加一个哨兵节点在头部,遍历链表,p指向已处理的节点,p_next表示p的下一个节点 2. flag表示p_next的值是否有重复,如果重复,则循环把p_next指向最后一个重复的节点, 并将p.next设置为p_next.next,将p_next指针下移 3. 如果p_next不重复(flag==false),则将p和p_next指针下移,重置flag为false */ if (pHead==null || pHead.next==null) return pHead; boolean flag = false; ListNode head = new ListNode(0); head.next = pHead; ListNode p = head, p_next = head.next; while (p_next!=null){ while (p_next.next!=null && p_next.val==p_next.next.val){ p_next = p_next.next; flag = true; } if (flag==true) p.next = p_next.next; else p = p.next; p_next = p.next; flag=false; } return head.next; } }