LeetCode:Remove Duplicates from Sorted List II
1479 ワード
Remove Duplicates from Sorted List II
Total Accepted: 70223
Total Submissions: 262095
Difficulty: Medium
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example, Given
Subscribe to see which companies asked this question
Hide Tags
Linked List
考え方:頭部に重複ノードがある場合を処理するために、「偽」のヘッドノードを追加し、
これも多くのチェーンテーブルの問題で使われているテクニックです.
code:
Total Accepted: 70223
Total Submissions: 262095
Difficulty: Medium
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
. Subscribe to see which companies asked this question
Hide Tags
Linked List
考え方:頭部に重複ノードがある場合を処理するために、「偽」のヘッドノードを追加し、
これも多くのチェーンテーブルの問題で使われているテクニックです.
code:
/**
* 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 NULL;
// “ ” ,
ListNode dummy(0);
dummy.next = head;
ListNode *pre = &dummy;
ListNode *cur = head;
while(cur){
while(cur->next && cur->val == cur->next->val) cur=cur->next;
if(pre->next == cur) pre = pre->next; //
else pre->next = cur->next; //
cur = cur->next;
}
return dummy.next;
}
};