专栏首页皮皮瞎学编程LinkedList - 876. Middle of the Linked List

LinkedList - 876. Middle of the Linked List

  1. 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.

思路:

就是求出链表的终点,非常简单的题目,使用快慢指针,快指针每次走一步,慢指针每次走两步,之所以写一下,是因为很多链表类的题目,都会首先求一下链表长度,再继续往下做。比如有一道题,让把一个有序列表,从中间断开,在合并起来,变成摇摆数组之类的题目。

代码:

go:

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func middleNode(head *ListNode) *ListNode {
    slow , fast := head, head
    for fast != nil && fast.Next != nil {
        fast = fast.Next.Next
        slow = slow.Next
    }
    
    return slow
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LinkedList - 148. Sort List

    Sort a linked list in O(n log n) time using constant space complexity.

    用户5705150
  • LinkedList - 143. Reorder List

    Given a singly linked list L: L_0→_L_1→…→_L__n-1→_L_n, reorder it to: L_0→_L__n...

    用户5705150
  • LinkedList - 83. Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear ...

    用户5705150
  • LeetCode 141 Linked List Cycle

    方法很简单,遍历一遍即可,在遍历过的节点,都改变它的一个状态。如果形成环,会再次指向遍历过的节点,这个时候判断它的状态是否改变。

    ShenduCC
  • 《剑指offer》之从尾到头打印链表

    仅仅看这个题目,有点不知道怎么下手的感觉,意思明白,但是怎么做呢?首先我们的准备一个链表,题目给了提示,我们创建一个ListNode 类,内容如下

    程序员爱酸奶
  • 【剑指Offer】6. 从尾到头打印链表

    要逆序打印链表 1->2->3(3,2,1),可以先逆序打印链表 2->3(3,2),最后再打印第一个节点 1。而链表 2->3 可以看成一个新的链表,要逆序打...

    瑞新
  • Sort List

    归并排序的链表法 #include<iostream> using namespace std; struct ListNode { int val;...

    用户1624346
  • Windows/linux下批量修改文件名方法

    rename命令可以用于批量修改文件名,在windows以及linux下都适用。windows下比较简单。且听娓娓道来。 首先你需要cd到你需要修改的那个文件...

    浩Coding
  • 每天一道剑指offer-链表中倒数第k个结点

    今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。

    乔戈里
  • Flex Box布局学习- 兼容

    随着自己写过的页面的增多,也遇到了很多CSS兼容性的问题。这些兼容性问题,都是必然的,因为技术在不断进步,不断革新,所谓,“后浪推前浪,前浪拍死在沙滩上”,当然...

    贺贺V5

扫码关注云+社区

领取腾讯云代金券