本文共 699 字,大约阅读时间需要 2 分钟。
给定一个单链表,求其中点。如果中点有两个取靠后的那个。
可以用快慢指针,慢指针每次走一步,快指针每次走两步。代码如下:
public class Solution { /** * @param head: the head node * @return: the middle node */ public ListNode middleNode(ListNode head) { // write your code here. ListNode dummy = new ListNode(0), slow = dummy, fast = dummy; dummy.next = head; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; } return fast == null ? slow : slow.next; }}class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; }}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。
转载地址:http://hqds.baihongyu.com/