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

    错误代码:

    class Solution {
    public:
        ListNode* deleteDuplication(ListNode* pHead)
        {
            if(pHead == NULL)
                return NULL;
            if(pHead->next == NULL)
                return pHead;
            ListNode* current = NULL;
            if(pHead->val == pHead->next->val){
                current = pHead->next->next;
                while(current->val == pHead->val && current != NULL)
                    current = current->next;
                return deleteDuplication(current);
            }
            else{
                current = pHead->next;
                pHead->next = deleteDuplication(current);
            }
            return pHead;
        }
    };

    正确代码:

    class Solution {
    public:
        ListNode* deleteDuplication(ListNode* pHead)
        {
            if(pHead == NULL)
                return NULL;
            if(pHead->next==NULL)
                return pHead;
            ListNode* current = NULL;
            if(pHead->val == pHead->next->val){
                current = pHead->next->next;
                while(current != NULL && current->val == pHead->val)
                    current = current->next;
                   return deleteDuplication(current);
            }
            else{
                current = pHead->next;
                pHead->next = deleteDuplication(current);
                //return pHead;
            }
            return pHead;
        }
    };

    可以看到不同点只是把current->val == pHead->val和current != NULL换了一下位置

    错误的代码报错报的是:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起

  • 相关阅读:
    Qt class加载头文件
    Qt 中KeyPressEvent获取不到Key_Space等事件
    如何选择开源许可证?
    C语言实现库函数汇总
    简单背包问题-递归非递归实现
    中点优先顺序遍历数组-递归非递归实现
    稀疏矩阵十字链表表示
    稀疏矩阵线性表示
    KMP模式匹配
    双向链表
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/7196125.html
Copyright © 2011-2022 走看看