博客
关于我
链表13-删除链表中重复的结点
阅读量:137 次
发布时间:2019-02-27

本文共 988 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要删除一个排序链表中重复的节点,保留一个。我们可以使用递归的方法来简化逻辑,确保每个重复节点只保留一个。

方法思路

递归方法的思路是比较当前节点和前一个节点的值。如果当前节点的值与前一个节点的值相同,则递归删除当前节点;否则,返回当前节点作为结果。这种方法确保了每次处理都是基于前一个节点的状态,从而避免了处理链表结构复杂性的问题。

解决代码

class Solution {public:    ListNode* deleteDuplication(ListNode* pHead) {        if (pHead == nullptr || pHead->next == nullptr) {            return pHead;        }        return deleteDuplicationHelper(pHead, nullptr);    }    ListNode* deleteDuplicationHelper(ListNode* cur, ListNode* prev) {        if (cur == nullptr) {            return prev;        }        if (prev != nullptr && prev->val == cur->val) {            return deleteDuplicationHelper(cur->next, prev);        } else {            return deleteDuplicationHelper(cur->next, cur);        }    }};

代码解释

  • 递归函数deleteDuplicationHelper(ListNode* cur, ListNode* prev) 用于处理当前节点和前一个节点。
  • 基本情况:如果当前节点为空,返回前一个节点。
  • 比较节点值:如果前一个节点不为空且值与当前节点相同,递归处理下一个节点。
  • 递归删除:如果当前节点与前一个节点不同,递归处理下一个节点,并将当前节点加入结果链表。
  • 这种方法确保了每个重复节点只保留一个,时间复杂度为 O(n),空间复杂度为 O(1),适用于链表长度较长的情况。

    转载地址:http://qibb.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现An Armstrong number阿姆斯特朗数算法(附完整源码)
    查看>>
    Objective-C实现anagrams字谜算法(附完整源码)
    查看>>
    Objective-C实现ApproximationMonteCarlo蒙特卡洛方法计算pi值算法 (附完整源码)
    查看>>
    Objective-C实现area under curve曲线下面积算法(附完整源码)
    查看>>
    Objective-C实现argmax函数功能(附完整源码)
    查看>>
    Objective-C实现arithmetic算术算法(附完整源码)
    查看>>
    Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
    查看>>
    Objective-C实现articulation-points(关键点)(割点)算法(附完整源码)
    查看>>
    Objective-C实现atoi函数功能(附完整源码)
    查看>>
    Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
    查看>>
    Objective-C实现average mean平均数算法(附完整源码)
    查看>>
    Objective-C实现average median平均中位数算法(附完整源码)
    查看>>
    Objective-C实现average mode平均模式算法(附完整源码)
    查看>>
    Objective-C实现avl 树算法(附完整源码)
    查看>>
    Objective-C实现AvlTree树算法(附完整源码)
    查看>>
    Objective-C实现backtracking Jump Game回溯跳跃游戏算法(附完整源码)
    查看>>
    Objective-C实现BACKTRACKING 方法查找集合的幂集算法(附完整源码)
    查看>>
    Objective-C实现bailey borwein plouffe算法(附完整源码)
    查看>>
    Objective-C实现balanced parentheses平衡括号表达式算法(附完整源码)
    查看>>
    Objective-C实现base64加密和base64解密算法(附完整源码)
    查看>>