Skip to content

Commit 61bf23a

Browse files
author
kwu130
committed
feat(src): add 92-reverseBetween
1 parent b76b20b commit 61bf23a

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

‎src/92-reverseBetween.cpp‎

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

0 commit comments

Comments
 (0)