忘了边界条件,少数次过
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode *deleteDuplicates(ListNode *head) { 12 // Start typing your C/C++ solution below 13 // DO NOT write int main() function 14 if (!head) return NULL; 15 ListNode *pre = new ListNode(head->val-1); 16 pre->next = head; 17 ListNode *cur = pre; 18 while (cur) { 19 ListNode *p = cur->next; 20 bool dup = false; 21 while (p && p->next && p->val == p->next->val) { 22 dup = true; 23 p->next = p->next->next; 24 } 25 if (dup) cur->next = p->next; 26 else cur = cur->next; 27 } 28 return pre->next; 29 } 30 };
C#
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public int val; 5 * public ListNode next; 6 * public ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode DeleteDuplicates(ListNode head) { 11 if (head == null) return null; 12 ListNode pre = new ListNode(head.val-1); 13 pre.next = head; 14 ListNode cur = pre; 15 while (cur != null) { 16 ListNode p = cur.next; 17 bool dup = false; 18 while (p != null && p.next != null && p.val == p.next.val) { 19 dup = true; 20 p.next = p.next.next; 21 } 22 if (dup) cur.next = p.next; 23 else cur = cur.next; 24 } 25 return pre.next; 26 } 27 }