|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|
|