LeetCode Remove Duplicates from Sorted List秩序チェーンテーブルの重複ノードを削除

3584 ワード

 1 /**

 2  * Definition for singly-linked list.

 3  * struct ListNode {

 4  *     int val;

 5  *     ListNode *next;

 6  *     ListNode(int x) : val(x), next(NULL) {}

 7  * };

 8  */

 9 class Solution {

10 public:

11 ListNode *deleteDuplicates(ListNode *head) {

12     if(head==0)    return 0;

13     ListNode *s,*e;

14     s=head;        //s 

15     e=head->next;        //e 

16     while(e){

17         if(e->val==s->val){

18             s->next=e->next;

19             delete(e);

20             e=s->next;

21         }

22         else{

23             s=s->next;

24             e=e->next;

25         }

26     }

27     return head;    

28 }

29 };

問題:並べ替えられたチェーンテーブルを提供し、重複がある場合は重複を削除します(つまり、要素ごとに1回しか表示できません).
考え方:秩序が整っているので、削除するのは隣接するいくつかに違いありません.最初に出現した要素を保持し,2回目以上出現したものを削除する.2つのポインタ、1つは前の要素を指し、1つは後の要素を指します.一つ一つ判断して終わります.
注意:この問題は1つのポインタでも解決できます.もちろん、1つと2つのメモリの違いは大きくありません.2つのポインタで比較的直感的に使用します.