876. Middle of the Linked List
Algorithm
本周做的算法题是 876. Middle of the Linked List。
问题描述
给一个非空的链表,找到其中间节点。若有两个中间节点,返回第二个。例子:
-
[1,2,3,4,5] 返回 3
-
[1,2,3,4,5] 返回 4
思路
-
将遍历链表,将元素放入一个数组arr里面,然后直接返回
arr[len/2]
,时间复杂度是O(len)(链表长度),空间复杂度O(len)。 -
快慢指针法,快慢指针遍历链表,快的比慢多走一倍。快指针遍历完链表,慢指针就是中间节点。时间复杂度O(len)(链表长度),空间复杂度O(1)。
1 | public ListNode middleNode(ListNode head) { |
Author: cloudfeng
Link: https://cloudfeng.github.io/2018/10/27/arts/algorithm/876_Middle_of_the_Linked_List/
License: 知识共享署名-非商业性使用 4.0 国际许可协议