BM2 链表内指定区间反转

链表内指定区间反转

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

  1. 问题不要看的太复杂,首先要看到ListNode这个类,没有构造方法,那么取出节点放到集合,反转集合再拼接节点的思路就行不通了
  2. 既然这样那么不如直接将链表需要反转的节点的值取出放到stack 里面,然后依次弹出,改变原链表节点的值,即可。
    public ListNode reverseBetween (ListNode head, int m, int n) {
        //m = n 不需要改动
        if(m == n){
            return head;
        }
        ListNode old = head;
        //定义栈存放需要反转的节点值
        Stack<Integer> arr = new Stack(); 
        //第一遍遍历 取出需要交换节点的值
        int index = 1;
        while(head!=null){
            if(index >= m && index<=n){
                arr.push(head.val);
            }
            index++;
            head = head.next;
        }
        ListNode temp = old;
        //第二遍遍历, 将值交换
        index = 1;
        while(temp!=null){
            if(index >= m && index<=n){
                temp.val = arr.pop();
            }
            index++;
            temp = temp.next;
        }
        return old;
    }
全部评论

相关推荐

11-27 21:29
已编辑
武汉理工大学 Java
dachang盒子:学历不错,但是项目配不上你的学历,一眼外卖+点评。唯一的亮点就是LLM客服,但是你的描述是“用Dify平台实现”这句话太掉价了。Dify是一个低代码/无代码平台,你写“用Dify”,面试官会觉得你只是拖拉拽弄了个Bot,没有代码量。作为一个Java后端,你应该展示的是LangChain/Spring AI的开发能力,而不是会用一个工具。如果你感兴趣的话可以私信我或者点我主页,我可以给你提供真实的大厂项目再加你这个学历,冲击大厂肯定没问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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