From 31ba7d7121e0aea35f4ce12014ee18b639e414fe Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Sun, 7 Feb 2021 13:46:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9B=E6=89=A3=EF=BC=9A876.=20=E9=93=BE?= =?UTF-8?q?=E8=A1=A8=E7=9A=84=E4=B8=AD=E9=97=B4=E7=BB=93=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leet/Official/t20210207/MiddleNode.java | 30 +++++++++++++++++++ .../code/leet/study/t20210207/MiddleNode.java | 22 ++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 LeetCode/src/main/java/com/code/leet/Official/t20210207/MiddleNode.java create mode 100644 LeetCode/src/main/java/com/code/leet/study/t20210207/MiddleNode.java diff --git a/LeetCode/src/main/java/com/code/leet/Official/t20210207/MiddleNode.java b/LeetCode/src/main/java/com/code/leet/Official/t20210207/MiddleNode.java new file mode 100644 index 0000000..c1eee4d --- /dev/null +++ b/LeetCode/src/main/java/com/code/leet/Official/t20210207/MiddleNode.java @@ -0,0 +1,30 @@ +package com.code.leet.Official.t20210207; + +import com.code.leet.entiy.ListNode; + +import java.util.ArrayList; +import java.util.List; + +/** + * 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 + *

+ * 如果有两个中间结点,则返回第二个中间结点。 + */ +public class MiddleNode { + /** + * 我们可以继续优化方法二,用两个指针 slow 与 fast 一起遍历链表。slow 一次走一步,fast 一次走两步。那么当 fast 到达链表的末尾时,slow 必然位于中间。 + * + * 作者:LeetCode-Solution + * 链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/solution/lian-biao-de-zhong-jian-jie-dian-by-leetcode-solut/ + * 来源:力扣(LeetCode) + * 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 + */ + public ListNode middleNode(ListNode head) { + ListNode slow = head, fast = head; + while (fast != null && fast.next != null) { + slow = slow.next; + fast = fast.next.next; + } + return slow; + } +} diff --git a/LeetCode/src/main/java/com/code/leet/study/t20210207/MiddleNode.java b/LeetCode/src/main/java/com/code/leet/study/t20210207/MiddleNode.java new file mode 100644 index 0000000..beec0a8 --- /dev/null +++ b/LeetCode/src/main/java/com/code/leet/study/t20210207/MiddleNode.java @@ -0,0 +1,22 @@ +package com.code.leet.study.t20210207; + +import com.code.leet.entiy.ListNode; + +import java.util.ArrayList; +import java.util.List; + +/** + * 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 + *

+ * 如果有两个中间结点,则返回第二个中间结点。 + */ +public class MiddleNode { + public ListNode middleNode(ListNode head) { + List list = new ArrayList<>(); + while (head != null) { + list.add(head); + head = head.next; + } + return list.get(list.size() / 2); + } +}