博客
关于我
链表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实现frequency finder频率探测器算法(附完整源码)
    查看>>
    Objective-C实现FTP上传文件(附完整源码)
    查看>>
    Objective-C实现FTP文件上传(附完整源码)
    查看>>
    Objective-C实现FTP文件下载(附完整源码)
    查看>>
    Objective-C实现fuzzy operations模糊运算算法(附完整源码)
    查看>>
    Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
    查看>>
    Objective-C实现gamma recursive伽玛递归算法(附完整源码)
    查看>>
    Objective-C实现gamma 伽玛功能算法(附完整源码)
    查看>>
    Objective-C实现gauss easte高斯复活节日期算法(附完整源码)
    查看>>
    Objective-C实现gaussian filter高斯滤波器算法(附完整源码)
    查看>>
    Objective-C实现gaussian naive bayes高斯贝叶斯算法(附完整源码)
    查看>>
    Objective-C实现gaussian高斯算法(附完整源码)
    查看>>
    Objective-C实现geometric series几何系列算法(附完整源码)
    查看>>
    Objective-C实现getline函数功能(附完整源码)
    查看>>
    Objective-C实现gnome sortt侏儒排序算法(附完整源码)
    查看>>
    Objective-C实现graph list图列算法(附完整源码)
    查看>>
    Objective-C实现GraphEdge图边算法(附完整源码)
    查看>>
    Objective-C实现GraphVertex图顶点算法(附完整源码)
    查看>>
    Objective-C实现greatest common divisor最大公约数算法(附完整源码)
    查看>>
    Objective-C实现greedy coin change贪心硬币找零算法(附完整源码)
    查看>>