876. 链表的中间结点 题目
思路是遍历一遍得到整个链表,讲每个 node 放进一个 list,就可以通过下标得到中间的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class ListNode : def __init__ (self, x) : self.val = x self.next = None class Solution : def middleNode (self, head: ListNode) -> ListNode: l = [] n = head while n.next: l.append(n) n = n.next l.append(n) return l[len(l)//2 ]
看官方解答,还有一个骚操作,通过两个速度不一样的指针,一个一次走一步,一个两次走一步,快的走到底时,慢的就在中间了。
1 2 3 4 5 6 7 8 9 10 11 12 class Solution : def middleNode (self, head: ListNode) -> ListNode: slow = fast = head while fast and fast.next: slow = slow.next fast = fast.next.next return 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) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。