题目
给定一个带有头结点 head
的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
示例1:
1 | 输入:[1,2,3,4,5] |
示例2:
1 | 输入:[1,2,3,4,5,6] |
提示:
- 给定链表的结点数介于
1
和100
之间。
解法
解法一:
借助外部数组,将链表的值存入数组,返回数组的中间位置元素即可。
Java
1 | public ListNode middleNode(ListNode head) { |
解法二:
使用快慢双指针,快指针每次前进两步,慢指针每次前进一步,快指针到尾部之后,慢指针就到了中点。
Java
1 | public ListNode middleNode(ListNode head) { |