92. 反轉連結串列 II
阿新 • • 發佈:2021-06-17
給你單鏈表的頭指標 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; } }