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;
    }
全部评论

相关推荐

虚闻松声:继续投吧。 简历没啥问题。很优秀。 拙见:自我评价没什么意义;试试转向Agent开发、大模型应用;别死磕传统Java开发。 免费修改简历,就业咨询,欢迎私信交流。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务