题解 | #牛群排列去重#
牛群排列去重
https://www.nowcoder.com/practice/8cabda340ac6461984ef9a1ad66915e4
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { // 这里因为算法时间要求,用的是暴力解法,用的是双指针。 // 保持慢指针每移动一步,快指针从慢指针的下一个一直移动到链表的尾部 ListNode* slow = head; ListNode* fast = head->next; ListNode* pre = head; ListNode* NewHead = new ListNode(0); NewHead->next = slow; while(slow){//控制慢指针 pre = slow; // 记录快指针的前一个 fast = slow->next;//每次把快指针重置为慢指针的下一个 while(fast){// 控制快指针 if(slow->val == fast->val){ ListNode* temp = fast->next; fast = nullptr; pre->next = temp;// 前一个指针直接跳过当前指针,指向当前指针的下一个 fast = temp; }else { pre = fast; // 移动指针 fast = fast->next; // 移动指针 } } slow = slow->next; // 移动指针 } return NewHead->next; } };