leetcode 83. Remove Duplicates from Sorted List

来源:互联网 发布:linux 文件删不掉原因 编辑:程序博客网 时间:2024/06/16 10:08

法一:遍历一遍,如果发现重复的就去掉这个节点。

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* deleteDuplicates(ListNode* head) {        if(!head)            return head;        ListNode *walker = head;        int val_last = head->val;        ListNode *node_pre = head;        while(walker->next != NULL)        {            ListNode *node_cur = walker->next;            if(!node_cur)                return head;            if(val_last == node_cur->val)            {                node_pre->next = node_cur->next;                delete node_cur;            }                else            {                val_last = node_cur->val;                node_pre = node_cur;                walker = node_cur;            }        }        return head;    }};

法二:一行搞定 牛逼

return h && (h->next = deleteDuplicates(h->next)) && h->next->val == h->val ? h->next : h;
if (h && (h->next = deleteDuplicates(h->next)) && h->next->val == h->val) delete h, h = h->next; return h;

法三:

这个方法也不错。

ListNode* deleteDuplicates(ListNode* head) {        ListNode* cur = head;        while(cur) {            while(cur->next && cur->val == cur->next->val) {                cur->next = cur->next->next;            }            cur = cur->next;        }        return head;    }

法四:这个考虑了内存泄漏的问题

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* deleteDuplicates(ListNode* head) {        ListNode *walker = head;        while(walker != NULL)        {            ListNode *node_remove = walker->next;            if(node_remove && node_remove->val == walker->val)            {                walker->next = walker->next->next;                delete node_remove;            }                else                walker = walker->next;        }        return head;    }};
0 0
原创粉丝点击