• [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;
        }
    };
  • 相关阅读:
    Spring 注解@Component,@Service,@Controller,@Repository
    HttpServlet service方法
    Intellij Idea生成serialVersionUID的方法
    创建数据库池实战
    代理模式
    基于SOA架构的TDD测试驱动开发模式
    服务治理要先于SOA
    简述我的SOA服务治理
    SOA服务类项目开发模式
    oracle容器化docker解决方案
  • 原文地址:https://www.cnblogs.com/cff2121/p/11646141.html
Copyright © 2020-2023  润新知