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

    Easy

    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.

    题目大意:

    给出一个链表,总中间截取链表并取后半部分。

    方法一:先算出链表的长度,然后返回后半部分链表

    代码如下:

    class Solution {
    public:
        ListNode* middleNode(ListNode* head) {
          ListNode *dummy = head;
          int len = 0;
          while (dummy) {
             dummy = dummy->next;
             len++;
          }
          len = len / 2;
          while (len > 0) {
             head = head->next;
             len--;
          }
          return head;
      } };

    方法二:快慢指针。找中间值,就让快指针每次移动2步,慢指针一次移动1步,直到快指针为空(链表长度为偶数)或快指针的next为空(链表长度为奇数)为止,此时慢指针的链表就是目标结果。

    代码如下:

    class Solution {
    public:
        ListNode* middleNode(ListNode* head) {
            ListNode *slow = head, *fast = head;
            while (fast&&fast->next) {
                slow = slow->next;
                fast = fast->next->next;
            }
            return slow;
        }
    };
  • 相关阅读:
    Python之美[从菜鸟到高手]--Python垃圾回收机制及gc模块详解
    linux-memory-buffer-vs-cache
    MYSQL----myownstars(102)
    win10系统调用架构分析
    on io scheduling again
    Java并发编程
    elixir-lang
    mydumper工作原理, seconds_behind_master的陷阱和pt-heartbeat (102)
    深入理解JavaScript系列+ 深入理解javascript之执行上下文
    我们应该如何去了解JavaScript引擎的工作原理 系列
  • 原文地址:https://www.cnblogs.com/cff2121/p/11646141.html
Copyright © 2011-2022 走看看