题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ #include <stack> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 *思路:先找到需要反转区间,再通过栈来进行反转,在反转过程中通过一个中间变量节点临时记录区间,通过改变区间的值就行 * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ ListNode* reverseBetween(ListNode* head, int m, int n) { // write code here ListNode* pre = head; int mm = m, nn = n; while ( m - 1 > 0) { pre = pre->next; m--; } stack<int> st; ListNode* temp = pre; //入栈 int num = nn-mm; while ( num > -1 ){ st.push(pre->val); pre = pre->next; num--; } while (!st.empty()) { temp->val = st.top(); temp = temp->next; st.pop(); } return head; } };