정렬 된 목록에서 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;
}
};