• [leetcode] 82. Remove Duplicates from Sorted List II


    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {//on_my_own
    public:
        ListNode* deleteDuplicates(ListNode* head) {
            ListNode *ret=new ListNode(0);//最终返回的指针
            ListNode *ret1=ret;//代表ret来进行 链接 节点的指针
            ListNode *pre=head;//每一个重复小组的第一个节点
            ListNode *cur=head;//每一个重复小组的最后一个节点
            bool first=true;//1表示是第一次,0表示不是第一次
            while(cur){
                while(cur->next!=NULL && cur->val==cur->next->val){
                    cur=cur->next;
                }//退出的时候cur应该指向重复小组的最后一个元素
                if(cur->next==NULL){
                    
                }
                if(pre==cur){//说明 重复小组 不重复
                    if(first){
                        ret->next=cur;
                        ret1=cur;
                        first=false;
                    }
                    else{
                        ret1->next=cur;
                        ret1=cur;
                    }
                    pre=cur->next;
                    cur=cur->next;
                }
                else{//说明 重复小组 重复了
                    if(cur->next==NULL){
                        if(first){
                            ret->next=NULL;
                        }
                        else{
                            ret1->next=NULL;
                        }
                        return ret->next; 
                    }
                    pre=cur->next;
                    cur=cur->next;
                }
            }
            return ret->next;
        }
    };
    

      

  • 相关阅读:
    单例模式
    iOS宏定义
    WKWebView基本使用
    文件操作(NSFileManager)
    iOS 字典和NSData之间转换
    iOS 身份证,邮箱,手机号验证
    iOS自定义数字键盘
    iOS指纹识别
    JavaScript表单
    JavaScript数组操作方法集合(2)
  • 原文地址:https://www.cnblogs.com/whutqueqiaoxian/p/5657246.html
Copyright © 2020-2023  润新知