zoukankan      html  css  js  c++  java
  • 876. Middle of the Linked List

    Given a non-empty, singly linked list with head node head, return a middle node of linked list.

    If there are two middle nodes, return the second middle node.

    Example 1:

    Input: [1,2,3,4,5]
    Output: Node 3 from this list (Serialization: [3,4,5])
    The returned node has value 3.  (The judge's serialization of this node is [3,4,5]).
    Note that we returned a ListNode object ans, such that:
    ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.
    

    Example 2:

    Input: [1,2,3,4,5,6]
    Output: Node 4 from this list (Serialization: [4,5,6])
    Since the list has two middle nodes with values 3 and 4, we return the second one.
    

    Note:

    The number of nodes in the given list will be between 1 and 100.
    找到中间结点,并返回。
    1. 第一种方法是用计数器遍历链表得到链表长度,然后除二取整,再用循环直接迭加到中间结点。

     1 struct ListNode* middleNode(struct ListNode* head) {
     2     if(!head)   return NULL;
     3     struct ListNode *current=head;
     4     int count=0;
     5     while(current){
     6         current=current->next;
     7         count++;
     8     }
     9     count/=2;
    10     current=head;//重新赋值多次,不然current是NULL报错
    11     while(count){
    12         current=current->next;
    13         count--;
    14     }
    15     return current; 
    16 }

    2. 第二种方法是用两个指针,快的走两步,慢的走一步,当快的走完的时候,慢的刚好停在中间。

    1 struct ListNode* middleNode(struct ListNode* head) {
    2     if(!head)   return NULL;
    3     struct ListNode *slow=head,*fast=head;
    4     while(fast && fast->next){
    5         slow=slow->next;
    6         fast=fast->next->next;
    7     }
    8     return slow;
    9 }
  • 相关阅读:
    NOI2015刷题记录
    [WC2013][UOJ58]糖果公园 莫队算法
    啦啦啦~
    完全平方数
    构建之法
    测试更新
    程序的测试
    程序的封装
    构建之法5.5-6-7章观后感
    给徐侃童鞋的一个汉堡
  • 原文地址:https://www.cnblogs.com/real1587/p/9850764.html
Copyright © 2011-2022 走看看