Partition List⚓︎
Description⚓︎
Given the head
of 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 1:
- Input:
head = [1,4,3,2,5,2], x = 3
- Output:
[1,2,2,4,3,5]
Example 2:
- Input:
head = [2,1], x = 2
- Output:
[1,2]
Constraints:
- The number of nodes in the list is in the range
[0, 200]
. -100 <= Node.val <= 100
-200 <= x <= 200
Solution⚓︎
See reference (Chinese).
- Time complexity: \(O(n)\);
- Space complexity: \(O(1)\).
Note: The evaluation program will traverse the result linked list once, if rightTail->next = nullptr;
is not written here, the end of the linked list may point to a node in the original linked list, so that traversing the result linked list may result in an endless loop.