https://leetcode.com/problems/partition-list/
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
Example:
Input: head = 1->4->3->2->5->2, x = 3 Output: 1->2->2->4->3->5
代码:
/** * 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 *dummy = new ListNode(-1); ListNode *cur = dummy; ListNode *pre = head; while(pre) { if(pre -> val < x) { ListNode *t = new ListNode(pre -> val); //t -> val = pre -> val; cur -> next = t; cur = cur -> next; } pre = pre -> next; } while(head) { if(head -> val >= x) { ListNode *c = new ListNode(head -> val); cur -> next = c; cur = cur -> next; } head = head -> next; } return dummy -> next; } };
遍历两遍链表 暴躁 Be 主