[LeetCode 연습문제] Remove Duplicates from Sorted List II

4895 단어 LeetCode
Remove Duplicates from Sorted List II
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 .
 
제목:
주어진 체인 테이블에 나타나는 중복된 요소는 하나도 남기지 않고 삭제해야 한다!!!
 
문제 해결 방법:
이 문제는 매우 간단하다. LeetCode에 또 하나의 문제가 있다. Remove Duplicates from Sorted List. 이것은 그의 업그레이드 버전이다. 두 가지 사고방식은 모두 차이가 많지 않다.
하나의 p와del지침을 사용하면 p는 체인표를 훑어보고 중복원소를 발견하고del는 중복원소를 가리키는 노드를 가리키며 그들을 삭제한다.
첫 번째 노드를 처리하는 데 편리하도록dummy 노드를 추가했습니다.
 
코드는 다음과 같습니다.
 1 class Solution {

 2 public:

 3     bool judgeDuplicates(ListNode *p){

 4         if(p->next == NULL)

 5             return false;

 6         return (p->val == p->next->val);

 7     }

 8 

 9     ListNode *deleteDuplicates(ListNode *head) {

10         if(head == NULL)

11             return NULL;

12         ListNode *dummy = new ListNode(0);

13         dummy->next = head;

14         ListNode *p = dummy,*del = NULL;

15         

16         while(p->next != NULL){

17             if(judgeDuplicates(p->next)){

18                 int val =p->next->val;

19                 while(p->next != NULL && p->next->val == val){

20                     del = p->next;

21                     p->next = del->next;

22                     delete del;

23                 }

24             }

25             else{

26                 p = p->next;

27             }

28         }

29 

30         del = dummy;

31         dummy = dummy->next;

32         delete del;

33         return dummy;

34     }

35 };

좋은 웹페이지 즐겨찾기