一开始还看错了我去,后来发现后改为:
ListNode* deleteDuplicates(ListNode* head) { if (head == nullptr || head->next == nullptr){ return head; } int currentMin = INT16_MIN; int& headVal = head->val; functioncheck; check = [&](ListNode*& node)->ListNode* { if (node == nullptr) { return nullptr; } node->next = check(node->next); int& currentVal = node->val; if (currentVal == currentMin || currentVal == headVal){ return node->next; } currentMin = currentVal; return node; }; head->next = check(head->next); return head;}
写完后不禁叹道:“唉,还是递归合我胃口!”
结果在看了其他人的答案后,觉得我这不是傻逼吗? 我离更简单的答案居然这么近都没想到:
ListNode* deleteDuplicates(ListNode* head) { if (head == nullptr || head->next == nullptr){ return head; } head->next = deleteDuplicates(head->next); return head->val == head->next->val? head->next : head;}