当前位置:   article > 正文

56.删除链表中重复的结点_在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,

题目描述

         在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针;

         例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

解题思路

  1. public ListNode deleteDuplication(ListNode pHead) {
  2. if (pHead == null || pHead.next == null) {
  3. return pHead; // 只有0个或1个结点,则返回
  4. }
  5. if (pHead.val == pHead.next.val) { // 当前结点是重复结点
  6. ListNode pNode = pHead.next;
  7. while (pNode != null && pNode.val == pHead.val) {
  8. // 跳过值与当前结点相同的全部结点,找到第一个与当前结点不同的结点
  9. pNode = pNode.next;
  10. }
  11. return deleteDuplication(pNode); // 从第一个与当前结点不同的结点开始递归
  12. } else { // 当前结点不是重复结点
  13. pHead.next = deleteDuplication(pHead.next); // 保留当前结点,从下一个结点开始递归
  14. return pHead;
  15. }
  16. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/983621
推荐阅读
相关标签
  

闽ICP备14008679号