删除链表中重复的节点_JAVA_较难
删除链表中重复的结点
http://www.nowcoder.com/questionTerminal/fc533c45b73a41b0b44ccba763f866ef
- 用一个提前头节点放在原头节点之前,可以完美解决处理原头节点的情况
- 两个指针处理:pre代表前一个已经处理完的节点,node代表当前处理节点
- 当node与之后的节点相同时,则一直后移到最后一位;如果Pre与node相邻,则说明无重复节点,不处理,否则越过node节点
public class Solution { public ListNode deleteDuplication(ListNode pHead){ ListNode head = new ListNode(-1), pre = head, node = pHead; head.next = pHead; while(node != null) { // 跳过重复节点 while(node.next != null && node.val == node.next.val) { node = node.next; } // 跳过最后一个重复节点 if(pre.next != node) { node = node.next; pre.next = node; } else { pre = node; node = node.next; } } return head.next; } }