1. 程式人生 > 其它 >92. 反轉連結串列 II

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; } }