题目描述
给你单链表的头结点 head
,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
示例:
示例 1:
输入:head = [1,2,3,4,5] 输出:[3,4,5] 解释:链表只有一个中间结点,值为 3 。
示例 2:
输入:head = [1,2,3,4,5,6] 输出:[4,5,6] 解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。
提示:
- 链表的结点数范围是
[1, 100]
1 <= Node.val <= 100
上代码,拿去即可运行:
package com.onlyqi.daydayupgo01.test;
import java.util.Objects;
public class Test18 {
public static void main(String[] args) {
ListNode head5 = new ListNode(5, null);
ListNode head4 = new ListNode(4, head5);
ListNode head3 = new ListNode(3, head4);
ListNode head2 = new ListNode(2, head3);
ListNode head1 = new ListNode(1, head2);
System.out.println("==========only-qi=============:" + middleNode(head1).getNum());
}
public static ListNode middleNode(ListNode head) {
ListNode fast = head, slow = head;
while (fast != null) {
slow = Objects.isNull(fast.getNetxt()) ? slow : slow.getNetxt();
fast = Objects.isNull(fast.getNetxt()) ? null : fast.getNetxt().getNetxt();
}
return slow;
}
}
我要刷300道算法题,第121道 。 好久好久没写算法了,最近开始写,先从最简单的开始。希望自己可以坚持下去