题解 | #删除链表中重复的结点#
删除链表中重复的结点
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;
}
}
美的集团公司福利 814人发布

查看9道真题和解析