• 29. 删除链表中重复的节点


    可能会把头结点删掉的问题,都会定义一个虚拟头节点

     

    p:上一次保留节点的最后一个位置
    q:下一段的第一个节点,用来把下一段全部扫描结束  ,只要相同q就一直向后走。p到q为一段

    本次用来3个节点,一个虚拟节点,另外的p、q用来遍历是否存在重复节点。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
     /***采用了虚拟头结点,此外的pq两个节点用来遍历重复的结点          ****/
    class Solution {
    public:
        ListNode* deleteDuplication(ListNode* head) {
            auto dummy =new ListNode(-1);
            dummy->next = head;
            
            auto p = dummy;
            while(p->next){    //p:上一次保留节点的最后一个位置
                auto q = p->next;  //下一段的第一个节点,用来把下一段全部扫描结束,注:p到q为一段        
                while(q && p->next->val == q->val ) q = q->next;
            
            if(p->next->next == q)//当前段不存在重复的结点
                p = p->next;
            else p->next = q;
            }
            return dummy->next;
        }
    };
    带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
  • 相关阅读:
    集合赋值及for循环删除符合条件的元素
    shiro系列12:rememberme(记住我)
    shiro系列11:缓存
    shiro系列10:会话管理
    shiro系列8:授权源码解析
    shiro系列7:拦截器
    shiro系列6:授权
    shiro系列5:Realm
    shiro系列4:认证源码解析
    shiro系列3:MD5盐值加密认证流程
  • 原文地址:https://www.cnblogs.com/make-big-money/p/12303836.html
Copyright © 2020-2023  润新知