首页 > 其他分享 >力扣876. 链表的中间结点

力扣876. 链表的中间结点

时间:2024-11-29 23:32:52浏览次数:6  
标签:力扣 slow ListNode struct 876 fast next 链表 指针

文章目录


  1. 链表的中间结点

一、快慢指针

我们学习快慢指针,是为了这种算法思想。

顾名思义,是一个慢指针,一步一步走。快指针随心所欲,可以一次走两步,也可以一次走三步四步等。

  • 如果一次走两步的话,当快指针走到链表尾部的时候,慢指针恰好可以走到链表中间。
    按照这种思路来看,快慢指针也是非常有用的。

二、运行代码

 struct ListNode {

     int val;
     struct ListNode *next;
  };

typedef struct ListNode ListNode;

struct ListNode* middleNode(struct ListNode* head) {

    ListNode* fast, * slow;

    fast = slow = head;

    while (fast && fast->next)

    {

        slow = slow->next;

        fast = fast->next->next;

    }

    return slow;
}



感谢大家能看到这里,多多支持!在这里插入图片描述

标签:力扣,slow,ListNode,struct,876,fast,next,链表,指针
From: https://blog.csdn.net/q38491/article/details/144095649

相关文章

  • 力扣每日一题 单调数组对的数目(dp)
     题目困难 动态规划给你一个长度为 n 的 正 整数数组 nums 。如果两个 非负 整数数组 (arr1,arr2) 满足以下条件,我们称它们是 单调 数组对:两个数组的长度都是 n 。arr1 是单调 非递减 的,换句话说 arr1[0]<=arr1[1]<=...<=arr1[n-1] 。arr2......
  • 142. 环形链表
    题目自己写的:/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*detectCycle(ListNode*head){ListNode......
  • 算法:链表 #241128
    算法:链表移除链表元素设计链表反转链表移除链表元素题目链接:leetcode#203给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]通过资......
  • 力扣刷题——3251. 单调数组对的数目 II
    考虑arr1可以取到的数字组合数,从0到i+1位置的合法的arr1组合数,可以从0到i的组合数得到。因此可以想到用动态规划解决问题,使用一个数组dp[i][j]代表arr1[i]=j时,前i+1个数字有多少个组合。这样一来,最终的答案即为sum(dp[n-1][0...M],其中M为nums中最大值。根据这个思路写出一个简......
  • Java 的数据结构:从数组到链表的基础实现
    Java的数据结构:从数组到链表的基础实现在Java编程中,数据结构是指用来存储和组织数据的方式。正确选择和使用数据结构能提高程序的效率和可扩展性。在这篇文章中,我们将深入探讨Java中两种基础数据结构:数组(Array)和链表(LinkedList),并通过实例讲解它们的基本实现、优缺点......
  • 从0到1构造链表
    #defineN20typedefenum{ Male, Female}gender_type;typedefstructstu{ charname[N]; unsignedcharage; gender_typegender; structstu*next;}student;voidprint_info(student*p){ while(p!=NULL){ printf("%s:%d%d\n",p->name......
  • 【力扣热题100】—— Day3.相交链表
    被你改变的那部分我,代替你,永远与我站在一起                                                                        ——24.11.28160.相交链表给你两个单链表的头节点 headA ......
  • 面试题 02.07. 链表相交
    题目自己写的:/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*getIntersection(ListNode*headA,ListNode*hea......
  • 力扣33.搜索旋转排序数组
    题目描述题目链接题目链接整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0<=k<nums.length)上进行了 旋转,使数组变为 [nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标 从0开始 ......
  • 链表篇
    链表篇跳-移除链表元素-203-力扣给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head......