Skip to content

Commit 7ccc460

Browse files
committed
add partition.cpp
1 parent 4ad740b commit 7ccc460

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

C++/partition.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Time Complexity: O(n)
2+
// Space Complexity: O(1)
3+
4+
/**
5+
* Definition for singly-linked list.
6+
* struct ListNode {
7+
* int val;
8+
* ListNode *next;
9+
* ListNode(int x) : val(x), next(NULL) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
ListNode *partition(ListNode *head, int x) {
15+
ListNode left_dummy(-1);
16+
ListNode right_dummy(-1);
17+
auto left_cur = &left_dummy;
18+
auto right_cur = &right_dummy;
19+
20+
for(auto cur = head; cur; cur = cur->next) {
21+
if(cur->val < x) {
22+
left_cur->next = cur;
23+
left_cur = cur;
24+
}
25+
else {
26+
right_cur->next = cur;
27+
right_cur = cur;
28+
}
29+
}
30+
31+
left_cur->next = right_dummy.next;
32+
right_cur->next = nullptr;
33+
return left_dummy.next;
34+
}
35+
};

0 commit comments

Comments
 (0)