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 }
  • 相关阅读:
    用Java redis 实现发送手机验证码的功能
    redis之Java Jedis 的使用(使用maven引入)
    设计模式之代理模式
    Redis相关配置
    Redis五大数据类型
    设计模式之享元模式
    设计模式之外观模式
    设计模式之组合模式
    设计模式之装饰者模式
    设计模式之适配器模式
  • 原文地址:https://www.cnblogs.com/real1587/p/9850764.html
Copyright © 2011-2022 走看看