Skip to content

Commit a0f7e44

Browse files
author
kwu130
committed
feat(src): add 86-partition
1 parent 913a72d commit a0f7e44

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

‎src/86-partition.cpp‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
//
2+
// Created by 1412 on 2025/11/18.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
#include "../include/common.h"
7+
8+
using namespace std;
9+
using listHelper::ListNode;
10+
11+
class Solution {
12+
public:
13+
ListNode* partition(ListNode* head, int x) {
14+
if (head == nullptr || head->next == nullptr) return head;
15+
ListNode dummy1 = ListNode(-1);
16+
ListNode dummy2 = ListNode(-1);
17+
ListNode *p1 = &dummy1, *p2 = &dummy2;
18+
while (head != nullptr) {
19+
if (head->val < x) {
20+
p1->next = head;
21+
p1 = p1->next;
22+
} else {
23+
p2->next = head;
24+
p2 = p2->next;
25+
}
26+
head = head->next;
27+
}
28+
p2->next = nullptr;
29+
p1->next = dummy2.next;
30+
31+
return dummy1.next;
32+
}
33+
};
34+
35+
void test() {
36+
Solution s;
37+
ListNode* head = listHelper::build({1, 4, 3, 2, 5, 2});
38+
ListNode* expected = listHelper::build({1, 2, 2, 4, 3, 5});
39+
ListNode* res = s.partition(head, 3);
40+
assert(listHelper::equal(res, expected));
41+
listHelper::free(head);
42+
listHelper::free(expected);
43+
44+
head = listHelper::build({2, 1});
45+
expected = listHelper::build({1, 2});
46+
res = s.partition(head, 2);
47+
assert(listHelper::equal(res, expected));
48+
listHelper::free(head);
49+
listHelper::free(expected);
50+
}
51+
52+
int main() {
53+
test();
54+
return 0;
55+
}

0 commit comments

Comments
 (0)