[Leetcode] #82#83 Remove Duplicates from Sorted List I & II

来源:互联网 发布:网络电视直播apk下载 编辑:程序博客网 时间:2024/06/06 03:56

Discription:

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.

Solution:

ListNode* deleteDuplicates(ListNode* head) {if (head == NULL || head->next == NULL) return head;ListNode *curr = head->next, *pre = head;while (curr){if (curr->val == pre->val){ListNode *temp = curr;pre->next = curr->next;curr = curr->next;delete temp;}else{pre = curr;curr = curr->next;}}return head;}
ListNode* deleteDuplicates(ListNode* head) {if (head) {ListNode *p = head;while (p->next) {if (p->val != p->next->val) {p = p->next;}else {ListNode *tmp = p->next;p->next = p->next->next;free(tmp);}}}return head;}

Discription:

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

Solution:

ListNode* deleteDuplicates(ListNode* head) {  //自己写的if (head == NULL || head->next == NULL) return head;ListNode *curr = head;ListNode *pre = new ListNode(-1);pre->next = head;head = pre;while (curr && curr->next){if (curr->val == curr->next->val){int base = curr->val;curr = curr->next;while (curr && (curr->val == base)){ListNode *tmp2 = curr;curr = curr->next;delete tmp2;}pre->next = curr;}else{curr = curr->next;pre = pre->next;}}return head->next;}
ListNode* deleteDuplicates(ListNode* head) {  //比较经典的ListNode* dummy = new ListNode(0);dummy->next = head;ListNode* cur = dummy;int duplicate;while (cur->next && cur->next->next) {if (cur->next->val == cur->next->next->val) {duplicate = cur->next->val;while (cur->next && cur->next->val == duplicate) {cur->next = cur->next->next;}}else {cur = cur->next;}}return dummy->next;}
附:Leetcode源代码见我的GitHub   
0 0
原创粉丝点击