정렬 된 목록에서 83을 제거 중복 *

정렬 된 목록에서 83을 제거 중복 *

https://leetcode.com/problems/remove-duplicates-from-sorted-list/

제목 설명

정렬 된 링크 목록을 감안할 때, 각 요소에 한 번만 나타나는 모든 중복은 삭제합니다.

예 1 :

Input: 1->1->2
Output: 1->2

예 2 :

Input: 1->1->2->3->3
Output: 1->2->3

C ++ 구현 1

표제 목록 바람직 더미에 저장된 새로운 목록을 수행하는 가상 노드를 도입하고, 새로운 액세스 노드마다 head, 그것이 첨가되는 prev배면 후 while (head && head->val == prev->val)중복 노드를 여과 하였다.

마지막으로 설정하는 초점이있다 prev->next = nullptr;이 잊을 수 없습니다.

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if (!head) return nullptr;
        ListNode* dummy = new ListNode(0);
        auto prev = dummy;
        while (head) {
            prev->next = head;
            prev = prev->next;
            head = head->next;
            while (head && head->val == prev->val) head = head->next;
        }
        prev->next = nullptr;
        return dummy->next;
    }
};
게시 된 455 개 원래 기사 · 원 찬양 8 ·은 20000 +를 볼

추천

출처blog.csdn.net/Eric_1993/article/details/104937013