LeetCode: Remove Duplicates from Sorted List

来源:互联网 发布:unity3d喷泉粒子特效 编辑:程序博客网 时间:2024/06/08 19:02

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.

Given 1->1->2->3->3, return 1->2->3.

/** * 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 *cur = head, *iter = NULL;        while(cur != NULL)        {            iter = cur;            while(iter->next != NULL && iter->val == iter->next->val)            {                iter = iter->next;                }            cur->next = iter->next;            cur = cur->next;        }        return head;    }};


Round 2:

class Solution {public:    ListNode *deleteDuplicates(ListNode *head) {        ListNode *cur = head, *iter = NULL;        while(cur != NULL)        {            iter = cur;            while(iter->next != NULL && iter->val == iter->next->val)            {                iter = iter->next;                }            cur->next = iter->next;            cur = cur->next;        }        return head;    }};

Round 3:

/** * 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 *iter = head;        while(iter != NULL)        {            if(iter->next == NULL)                break;            if(iter->val == iter->next->val)            {                iter->next = iter->next->next;            }            else            {                iter = iter->next;            }        }        return head;    }};


0 0
原创粉丝点击