From da94ad65942ccaa2197a987c7d2dabac26ac2d1d Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Tue, 9 Feb 2021 13:40:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9B=E6=89=A3=EF=BC=9A92.=20=E5=8F=8D?= =?UTF-8?q?=E8=BD=AC=E9=93=BE=E8=A1=A8=20II?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leet/study/t20210209/ReverseBetween.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 LeetCode/src/main/java/com/code/leet/study/t20210209/ReverseBetween.java diff --git a/LeetCode/src/main/java/com/code/leet/study/t20210209/ReverseBetween.java b/LeetCode/src/main/java/com/code/leet/study/t20210209/ReverseBetween.java new file mode 100644 index 0000000..5806bcb --- /dev/null +++ b/LeetCode/src/main/java/com/code/leet/study/t20210209/ReverseBetween.java @@ -0,0 +1,53 @@ +package com.code.leet.study.t20210209; + +import com.code.leet.entiy.ListNode; + +import java.util.ArrayList; +import java.util.List; + +/** + * 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 + *

+ * 说明: + * 1 ≤ m ≤ n ≤ 链表长度。 + */ +public class ReverseBetween { + /** + * 92. 反转链表 II + */ + public ListNode reverseBetween(ListNode head, int m, int n) { + if (n == 1) { + return head; + } + List list = new ArrayList<>(); + int num = 1; + ListNode before = new ListNode(0); + ListNode after = null; + ListNode temp = head; + while (temp != null) { + if (num == m - 1) { + before = temp; + } + if (num >= m && num <= n) { + list.add(temp); + } + if (num == n) { + after = temp.next; + break; + } + temp = temp.next; + num++; + } + ListNode newHead = before; + int size = list.size(); + for (int i = size - 1; i >= 0; i--) { + before.next = list.get(i); + before = before.next; + } + before.next = after; + if (m == 1) { + head = newHead.next; + } + return head; + } +}