马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
82. Remove Duplicates from Sorted List II #Medium
Given the head of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.
Example 1:
Input: head = [1,2,3,3,4,4,5]
Output: [1,2,5]
Example 2:
Input: head = [1,1,1,2,3]
Output: [2,3]
Constraints:
The number of nodes in the list is in the range [0, 300].
-100 <= Node.val <= 100
The list is guaranteed to be sorted in ascending order.
C/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head) {
struct ListNode *before = NULL;
struct ListNode *current = head;
if (head == NULL) {
return NULL;
}
struct ListNode *next = head->next;
while (next) {
if (current->val == next->val) {
while (next && current->val == next->val) {
current = current->next;
next = next->next;
}
if (next == NULL) {
if (before == NULL) {
return NULL;
}
before->next = NULL;
return head;
}
current = current->next;
next = next->next;
if (before == NULL) {
head = current;
} else {
before->next = current;
}
} else {
before = current;
current = current->next;
next = next->next;
}
}
return head;
}
不愧是medium 想了三天qwq
|