zoukankan      html  css  js  c++  java
  • 删除链表中重复的结点

    offer_56

    概要:删除链表中重复的结点

    题目描述:

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    /*
     public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    */
    public class Solution {
        public ListNode deleteDuplication(ListNode pHead)
        {
    
            if(pHead == null || pHead.next == null) return pHead;
            //防止头结点被删掉,要创建一个新的结点指向头结点
            //相当于在原来的链表上多加了一个结点放在头结点的前边
            ListNode head =  new ListNode(0);
            head.next  = pHead;
            
            
            //前结点
            ListNode pre = head;
            //当前结点
            ListNode cur = pHead;
            
            
            //当前结点与当前结点的下一个结点存在
            while(cur != null && cur.next != null)
            {
                if(cur.val == cur.next.val){//如果当前结点的值与当前结点的下一个结点的值相同
                
                    //再判断当前结点的下一个结点是否存在,并且当前结点的值与当前结点的下一个结点的值是否相同
                    while(cur.next != null && cur.val == cur.next.val){
                        //如果相同,就把当前结点往后移动;直到当前结点的值与下一个结点的值不同才不移动当前结点位置
                        cur = cur.next;
                    }
                    //已经把与当前结点所有的相同值的结点都划过了,而且当前结点指向的是  与当前结点值相同的结点的 最后一个结点
                    //把前结点的值指向换成当前结点的下一个,就相当于删除掉了所有的与当前结点相同的值的结点,并且包含当前结点的值
                    pre.next = cur.next;
                    //当前结点后移
                    cur = cur.next;
                }else{//如果当前结点的值与当前结点的下一个结点的值不同
                  //前结点换成当前结点
                    pre = cur;
                    //当前结点往后移动
                    cur = cur.next;
                }
            }
            //因为head是自定义的头结点,要返回原来的链表,应改return的是下一个
            return head.next;
            
        }
    }
    

  • 相关阅读:
    python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
    python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
    CDH版本Hbase二级索引详细配置方案Solr key value index(二)中文分词
    CDH版本Hbase二级索引详细配置方案Solr key value index
    Seccon2017-pwn500-video_player
    Linux ASLR的实现
    0ctf2017-pages-choices
    33c3-pwn500-recurse
    关于C++中的string的小知识点
    Apache Kylin(三)Kylin上手
  • 原文地址:https://www.cnblogs.com/SunAlbert/p/13475382.html
Copyright © 2011-2022 走看看