• 删除链表中重复的节点


    题目描述

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
     
    解题思路:
    使用三个指针:preNode指向值没有重复的最后一个节点、nowNode当前的节点、nextNode当前节点的下一个节点。
    最开始preNode和nowNode指向头结点,判断nextNode与nowNode当前节点值是否一致,(1)如果一致说明头结点需要改变,我们找到第一个跟头结点值不同的节点,然后将头结点、preNode和nowNode都指向该节点;(2)如果不一致说明头结点没有重复,此时preNode和nowNode都指向头结点,需要让nowNode指向nextNode。
     
    class Solution {
    public:
        ListNode* deleteDuplication(ListNode* pHead)
        {
            ListNode *preNode, *nowNode, *nextNode;
            preNode = pHead;
            nowNode = pHead;
            nextNode = NULL;
            while(nowNode != NULL){
                nextNode = nowNode->next;
                if(nextNode != NULL){
                    if(nextNode->val == nowNode->val){
                        while(nextNode != NULL && nextNode->val == nowNode->val){
                            nextNode = nextNode->next;
                        }
                        if(preNode == nowNode){
                            //头结点需要改变
                            pHead = nextNode;
                            preNode = nextNode;
                            nowNode = nextNode;
                        }else{
                            //删掉中间的重复节点
                            preNode->next = nextNode;
                            nowNode = nextNode;
                        }
                    }else{
                        //移动preNode节点到当前节点,nowNode节点指向下一个和当前节点值不同的节点
                        if(nowNode != preNode){
                            preNode = nowNode;
                            nowNode = nextNode;
                        }else{
                            //当前节点指向下一个和当前节点值不同的节点
                            nowNode = nextNode;
                        }
                    }
                }else{
                    break;
                }
            }
            return pHead;
        }
    };
    

      

  • 相关阅读:
    遗传算法python实现
    lambda的一些用法
    Python遗传和进化算法框架(一)Geatpy快速入门
    电脑连接小爱同学音箱无法调节音量
    Shell脚本批量修改文件编码为UTF-8
    java实现 批量转换文件编码格式为UTF8
    POM添加规范
    SOFA框架跨包调用报错NoClassDefFoundError
    logger打印日志时加if (logger.isInfoEnabled())/if (logger.isDebugEnabled())
    对象,JSON,字符串,map之间的互转
  • 原文地址:https://www.cnblogs.com/chengsheng/p/10697822.html
Copyright © 2020-2023  润新知