当前位置:   article > 正文

双指针-链表_双指针链表

双指针链表

双指针-链表

83. 删除排序链表中的重复元素

给定一个已排序的链表的头 head删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表

image-20220403192741883

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(head == NULL) return head;
        auto slow = head,fast = head;
        while(fast!=NULL){
            if(fast->val!= slow->val){
                slow->next = fast;
                slow = slow->next;
            }
            fast = fast->next;
        }
        slow->next = NULL;
        return head;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

82. 删除排序链表中的重复元素 II

给定一个已排序的链表的头 head删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表

image-20220403192839780

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode*dummy = new ListNode(-1);
        dummy->next = head;
        auto cur = dummy;//建立虚拟节点
        while(cur->next){
            auto nxt = cur->next->next;
            //nxt需要移动到与当前位置val不相等的情况
            while(nxt && nxt->val == cur->next->val) nxt = nxt->next;//确保cur后面没有val相等的情况
            if(cur->next->next == nxt) cur = cur->next;
            else cur->next = nxt;
        }
        return dummy->next;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/956952
推荐阅读
相关标签
  

闽ICP备14008679号