题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
//遍历两次,第一次把m到n之间的数存入栈中 第二次取出栈。卡住的点在于要判断入栈出栈后的->next需要判断条件
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类
*/
ListNode* reverseBetween(ListNode* head, int m, int n) {
int clock1 = 1,clock2=1;
stack<int> reverse;
ListNode* token = head;
ListNode* temp = head;
while (token != NULL)
{
if (m == clock1)
{
for(int i=m;i<=n;i++)
{
reverse.push(token->val);
if (token->next != NULL)
{
token = token->next;
}
}
}
token = token->next;
clock1++;
}
while (temp != NULL)
{
if (m == clock2)
{
while (!reverse.empty())
{
temp->val = reverse.top();
reverse.pop();
if (temp->next != NULL)
{
temp = temp->next;
}
}
}
temp = temp->next;
clock2++;
}
return head;
}
};

SHEIN希音公司福利 254人发布