首页 > 其他 > 详细

92. 反转链表 II

时间:2021-06-17 12:17:31      阅读:9      评论:0      收藏:0      [点我收藏+]

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:

技术分享图片

 

 

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]

 

解法:利用栈来实现

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        ListNode dummyNode = new ListNode(-1);

        dummyNode.next = head;

        ListNode pre = dummyNode;

        for(int i = 0;i< left -1;i++)
        {
            pre = pre.next;
        }

        ListNode cur = pre.next;

        Stack<ListNode> st = new Stack<ListNode>();

        ListNode next;
        for(int i = 0;i<=right-left;i++)
        {
            st.push(cur);
            cur = cur.next;
        }

        while (!st.isEmpty())
        {
            ListNode temp = st.pop();
            pre.next =temp;
            pre= pre.next;
        }
        pre.next = cur;
        return  dummyNode.next;
    }
}

 

92. 反转链表 II

原文:https://www.cnblogs.com/kpwong/p/14892141.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!