//将list存入vector,然后翻转中间部分数列
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
vector<ListNode*> node;
ListNode* cur = head;
for(int i=0;i<m-1;i++)
cur=cur->next;
for(int i=0;i<=n-m;i++)
{
node.push_back(cur);
cur=cur->next;
}
for(int i=0;i<(n-m+1)/2;i++)
swap(node[i]->val,node[node.size()-i-1]->val);
return head;
}
};
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
vector<ListNode*> node;
ListNode* cur = head;
for(int i=0;i<m-1;i++)
cur=cur->next;
for(int i=0;i<=n-m;i++)
{
node.push_back(cur);
cur=cur->next;
}
for(int i=0;i<(n-m+1)/2;i++)
swap(node[i]->val,node[node.size()-i-1]->val);
return head;
}
};
本文介绍了一种使用 C++ 实现的链表区间反转算法。该算法首先将指定范围内的链表节点存储到 vector 中,接着交换这些节点值的中间部分,从而实现区间内元素的反转。这种方法不需要额外创建新的链表。
563

被折叠的 条评论
为什么被折叠?



