Partition List
思路:题目要求partition后仍然保持list中原始的数字大小关系,所以可以使用两个头指针分别记录<x和>=x的数字,组成两个list。然后直接相连即可,这里需要注意要进行list->next=nullptr操作。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* partition(ListNode* head, int x) { ListNode minDummy(-1); ListNode maxDummy(-1); ListNode *minPrev = &minDummy; ListNode *maxPrev = &maxDummy; ListNode *cur = head; while(cur) { if(cur->val < x) { minPrev->next = cur; minPrev = minPrev->next; } else { maxPrev->next = cur; maxPrev = maxPrev->next; } cur = cur->next; } minPrev->next = maxDummy.next; maxPrev->next = nullptr; return minDummy.next; } };

浙公网安备 33010602011771号