题解 | #链表内指定区间反转#

链表内指定区间反转

https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

一、解题思路

  1. 使用计数器记录左右指针移动的距离,让left和right均指针指向左区域
  2. count<=n,操纵右指针指向右区域,同时将值val压栈
  3. 根据栈内数据的多少决定左指针移动的位置,同时出栈将值赋给左指针指向的节点的val,完成区间值的替换

二、代码

/**
 * 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 count = 1;
        //栈
        stack<int> node_stack;
        ListNode* left=head;
        ListNode* right=head;
        while(count<m) {
            left=left->next;
            right=right->next;
            count++;
        }
        while(count<=n) {
            //压栈
            node_stack.push(right->val);
            right=right->next;
            count++;
        }
        while(!node_stack.empty()) {
            //出栈
            left->val=node_stack.top();
            node_stack.pop();
            left=left->next;
        }
        return head;
    }
};
#我的实习求职记录#
全部评论

相关推荐

🎓学历背景:双非土木硕👨‍💻意向职位:AI应用开发大佬们可以帮我看看简历吗,秋招至今0offer
秋招结束再玩瓦:今年科班都不好找哇……你可以试试交叉岗,比如制造业国企的一些开发算法,或者互联网的边缘岗,it技术支持,运维这些
我的简历长这样
点赞 评论 收藏
分享
Java面试先知:我也是和你一样的情况,hr 说等开奖就行了
点赞 评论 收藏
分享
辅助位:定时器项目都被用烂了,感觉
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务