zoukankan      html  css  js  c++  java
  • 92. 反转链表 II

    给你单链表的头指针 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;
        }
    }
  • 相关阅读:
    字符编码ANSI和ASCII区别、Unicode和UTF-8区别
    《非暴力沟通》读后感
    软件测试
    报表导出测试点
    如何设计测试用例
    国密算法sm2.sm3.sm4
    免杀原理与实践
    SQL注入攻击
    网络攻防实践 第十周作业
    网络攻防实践第九周
  • 原文地址:https://www.cnblogs.com/kpwong/p/14892141.html
Copyright © 2011-2022 走看看