LeetCode-876. 链表的中间结点 C语言

news/2024/11/23 23:48:32/

876. 链表的中间结点


给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。


示例 1:

输入:[1,2,3,4,5]

输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。
注意,我们返回了一个 ListNode 类型的对象 ans,这样:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.



思路:

定义一对快慢双指针。fast走两步,slow走一步。
在这里插入图片描述

当fast到达尾部,slow指向的就是链表中间元素。
在这里插入图片描述

以上是链表元素为单数的情况。如果为双数,情况如下。

当fast为NULL,slow指向的就是下中位数。

结束遍历链表的条件为链表最后一个元素不为NULL,并且数组最后元素的next不为NULL。

在这里插入图片描述

代码示例


struct ListNode* middleNode(struct ListNode* head) {//定义快慢双指针。struct ListNode* slow = head;struct ListNode* fast = head;//结束遍历链表的条件为链表最后一个元素不为NULL,并且数组最后元素的next不为NULL。while (fast && fast->next){slow = slow->next;fast = fast->next->next;}//遍历结束slow指针指向中位数,return slow;}

http://www.ppmy.cn/news/537796.html

相关文章

Leetcode876.链表的中间节点

876.链表的中间节点 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 题目:876. 链表的中间结点 - 力扣(LeetCode) (leetcode-cn.com) 思路:利用快…

LC 876

ListNode* middleNode(ListNode* head) {int counter0;ListNode* lhead;ListNode* l1head;if(l->nextNULL) return l;while(l!NULL){ll->next;counter;}int midcounter/21;for(mid;mid>1;mid--){l1l1->next; }return l1;}

Codeforces Round 876 (Div. 2)

A.直接模拟即可 贪心放1的时候直接放i #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <set> #include <map> #include <cmath> #include<functional> using namespace std; con…

leetCode876

快慢指针法&#xff0c;学到了 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode* middleNode(ListNode* head) {ListNode* fast hea…

Astro VG876图像信号发生器控制软件

using System; using System.Windows.Forms; namespace VG876控制软件 { public partial class Form_VG876 : Form { public Form_VG876() { InitializeComponent(); } private void Form_VG876_Load(object sender, EventArgs e…

876计算机大纲,876水力学考大纲.doc

876水力学考大纲 2013年硕士研究生入学考试大纲 考试科目名称&#xff1a;水力学 考试科目代码&#xff1a;[876] 考试要求&#xff1a; 要求考生全面系统地掌握本学科专业基础知识和专业业务综合知识&#xff0c;并且能运用所学的基本理论和实验技能&#xff0c;说明和解决实践…

循坏队列CircularQueue

前言 一、CircularQueue 二、特点 三、设计思路 1&#xff09;判空与判满 2&#xff09;链表还是数组实现&#xff1f; 四、实现 1).IsEmpty() 2).IsFull() 3)CircularQueueCreate创建 4&#xff09;CircularQueueEnQueue插入 5&#xff09;CircularQueueDeQueue删除 6&#xf…

使用Python读取Abaqus ODB,生成相关输出并将其写入文件的工具

在许多领域&#xff0c;例如工程和科学研究中&#xff0c;有时我们需要对ABAQUS的输出数据库&#xff08;ODB&#xff09;文件进行解析&#xff0c;并根据需要生成一些自定义的输出结果。为此&#xff0c;我们需要使用Python的ABAQUS ODB接口。在这篇文章中&#xff0c;我们将详…