From bf4f350a4745e2b41c650dad93f44700d16c3430 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 10 Feb 2021 09:38:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9B=E6=89=A3=EF=BC=9A143.=20=E9=87=8D?= =?UTF-8?q?=E6=8E=92=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leet/study/t20210210/ReorderList.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 LeetCode/src/main/java/com/code/leet/study/t20210210/ReorderList.java diff --git a/LeetCode/src/main/java/com/code/leet/study/t20210210/ReorderList.java b/LeetCode/src/main/java/com/code/leet/study/t20210210/ReorderList.java new file mode 100644 index 0000000..e1c3998 --- /dev/null +++ b/LeetCode/src/main/java/com/code/leet/study/t20210210/ReorderList.java @@ -0,0 +1,45 @@ +package com.code.leet.study.t20210210; + +import com.code.leet.entiy.ListNode; + +import java.util.ArrayList; +import java.util.List; + +/** + * 给定一个单链表 L:L0→L1→…→Ln-1→Ln , + * 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… + *

+ * 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 + */ +public class ReorderList { + /** + * 143. 重排链表 + */ + public void reorderList(ListNode head) { + if (head == null) { + return; + } + List list = new ArrayList<>(); + ListNode temp = head.next; + while (temp != null) { + list.add(temp); + temp = temp.next; + } + temp = head; + int size = list.size(); + int count = (size + 1) / 2; + for (int i = 1; i <= count; i++) { + if (size - i != i - 1) { + temp.next = list.get(size - i); + temp.next.next = list.get(i - 1); + temp = temp.next.next; + } else { + temp.next = list.get(i - 1); + temp = temp.next; + } + } + temp.next = null; + } + + +}