zoukankan      html  css  js  c++  java
  • 《剑指Offer》面试题57:删除链表中重复的节点

    题目:在一个排序的链表中,如何删除重复的节点?
    样例输入: 1 2 3 3 4 4 5
    样例输出: 1 2 5

    1.新建一个头节点,以防第一个节点被删除。
    2.保存当前节点上个节点,循环遍历整个链表,如果当前节点的值与下一个节点的值相等,则将当前节点的值与next.next节点的值比较,直到不相等或者null为止,最后将当前节点的上个节点pre指向最后比较不相等的节点。
    3.如果当前节点与next节点不相等,则直接节点指针全部向后移动一位。

    package com.test20160709;
    
    /**
     * Created by yan on 2016/7/9.
     */
    public class DeleteDuplication {
    
        public ListNode deleteDuplication(ListNode pHead)
        {
            if(pHead==null)
                return pHead;
            ListNode first = new ListNode(0);
            first.next = pHead;
            ListNode p = pHead;
            ListNode pre = first;
            while (p!=null&&p.next!=null){
                if(p.val==p.next.val) {
                   int val = p.val;
                    while(p!=null&&p.val==val)
                        p = p.next;
                    pre.next = p;
                }else {
                    pre= p;
                    p = p.next;
                }
            }
            return first.next;
        }
    
    
        public class ListNode {
            int val;
            ListNode next = null;
    
            ListNode(int val) {
                this.val = val;
            }
        }
    }
    
  • 相关阅读:
    apache httpd配置问题
    php文件上传进度控制模块
    “fixed” css style in mobile safari
    第八周进度表
    大白鱼团队项目计划表
    第七周进度表
    结对开发团队成员以及题目介绍
    软件工程结对作业01
    软件工程子数组求和1
    软件工程子数组求和2
  • 原文地址:https://www.cnblogs.com/yankang/p/6399028.html
Copyright © 2011-2022 走看看