删除链表中重复的节点_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;
    }
}
全部评论

相关推荐

11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务