C语言题目练习4

news2024/11/26 0:43:33

这一篇博客继续在算法题的海洋里面遨游~

链表的中间结点

链表的中间结点: https://leetcode.cn/problems/middle-of-the-linked-list/description/

这个题我们可以怎么办呢?这里依然提供两个思路

思路1

既然是中间结点我们是不是可以直接第一次循环求链表结点的总个数除2就可以得到中间位置,再一次循环找到中间位置结点,这一个思路就需要两个循环实现。

代码实现:


typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head)
{
	//第一次循环遍历知道结点总个数
	int longList = 0;
	ListNode* pcur1 = head;
	while (pcur1)
	{
		longList++;
		pcur1 = pcur1->next;
	}
	//找到中间结点
	//例:(结合题目中间结点的概念)
	// 总个数:5 奇数 mid = 2
	// 总个数:6 奇数 mid = 3
	int mid = longList / 2;
	//这里mid代表往后面走几次到中间结点
	//类似下标理解

	//第二次循环找到并且返回中间结点
	ListNode* pcur2 = head;
	while (mid--)
	{
		pcur2 = pcur2->next;
	}

	//返回中间结点
	return pcur2;
}

成功通过,这里使用了两次循环,有没有只需要使用一次循环的方法呢?也就是我们的思路2

思路2

快慢指针法

定义两个指针slow=fast=head,一个是快指针fast每次走两步,一个是慢指针slow每次走一步,当fast为NULL(偶数)fast->next为NULL(奇数)时,循环结束,返回慢指针。

原理:2*慢指针==快指针

画图理解:

代码实现:


//2.快慢指针
typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head)
{
	//创建两个指针
	ListNode* slow, * fast;
	slow = fast = head;
	while (fast && fast->next)
		//顺序不可以换,避免空指针解引用
		//&&会有短路现象(如果&&左边表达式成立,右边就不会执行运算)
	{
		//慢指针走一步
		slow = slow->next;
		//快指针走两步
		fast = fast->next->next;
	}
	//返回慢指针
	return slow;
}

成功通过,这里代码也就更加简便,是不是十分巧妙~~~

今日练习结束,期待与各位未来的优秀程序员交流,有什么问题请私信~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL从入门到跑路

SQL语言 SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系数据库的一种标准编程语言。 SQL分类: DDL(Data Definition Language):数据定义语言,用于操作数据库、表、字段&#xff0c…

天气API接口调用

天气API接口: 天气API接口是一种用于获取实时或预报天气信息的应用程序编程接口(API)。开发者可以使用这种接口在他们的应用程序或网站上集成天气查询功能,比如查询某个地区的当前温度、降水量、风速等数据。 通常,你…

Django ORM 进行基础 CRUD 操作(创建、读取、更新、删除)

Django ORM 进行基础 CRUD 操作(创建、读取、更新、删除) Django 是一个流行的 Python web 框架,提供了很多实用的功能来帮助开发者快速构建 web 应用程序。Django 的 ORM(Object-Relational Mapping)是其强大的数据库…

Java_ EE (网络编程)

网络编程基本概念: 计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。从其…

【C++算法】双指针

目录 一、快乐数: 二、有效三角形的个数: 三、盛最多水的容器: 四、复写0: 五、三数之和: 总结: 一、快乐数: 题目出处: 202. 快乐数 - 力扣(LeetCode&#xff09…

spring task的使用场景

spring task 简介 spring task 是spring自带的任务调度框架按照约定的时间执行某个方法的工具,类似于闹钟 应用场景 cron表达式 周和日两者必定有一个是问号 简单案例

基于java的企业车辆管理系统设计与实现(论文+源码)-kaic

摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。现有的车辆管理系统存在着不足之处,例如系统不够稳定,功能不够全面。因此&#xff0c…

Python基础之转义字符

字符串转义 转义是指在字符前加一个 \ \ n 则表示原来的字符n不代表字符n 赋予了一个新的含义 变成了一个换行符 print(wu\nzj\njing) \n 会解释为一个换行符 s "wu\"zj" 双引号是用来创建一个字符串的效果 加上\后就变成了一个字符双引号 它就是一个…

如何解决 Open /etc/postfix/main.cf: Permission denied ?

最近我的 Postfix 邮件系统无法发送电子邮件,报错内容:Open /etc/postfix/main.cf: Permission denied 经过一番调查,我能够解决这个问题。 日志文件中发现的错误如下: Jun 27 12:51:02 tecadmin postfix/postfix-script[11764]…

AI大模型开发架构设计(11)——AI 大模型与提示词工程助力职场典型案例场景实战

文章目录 AI 大模型与提示词工程助力职场典型案例场景实战1 AI大模型全局架构实战剖析AI大模型常见术语AI 大模型全局架构 2 Prompt Engineering 整体应用场景剖析Prompt 提示词的三个层次Prompt 提示词的经典模板如何让 Prompt 提示词做的更好?如何让 Prompt 提示词自动优化改…

ResNet模型

使用pytoch实现 1.卷积神经网络 conv2d的参数很简单 conv2d(input_channels, output_channels,kernel_size, stride, padding) 参数分别是输入通道,输出通道,卷积核大小,移动步长,填充数量。 输入通道是特征图的深度&#xff0c…

Android上的AES加密

基础算法说明 https://www.youtube.com/watch?vlnKPoWZnNNM 虽然这个视频讲的非常详细,但是涉及到具体底层算法,大致流程 1. 将数据转成HEX或者byte array 2.将数据分层一块块等大小的数据 3.将数据和key 进行一次混合,加密之后的输出&…

(vue)el-tabs标签页展示el-table动态表头表格

&#xff08;vue&#xff09;el-tabs标签页展示el-table动态表头表格 效果: 代码 <el-tabs v-if"showStatistics" type"border-card"><el-tab-panev-for"(item, index) in statisticsTable":key"index":label"item.pr…

C++游戏开发指南(新改)

目录 1. 引言 2. C的基础知识 2.1 面向对象编程与游戏开发 2.2 指针与内存管理 2.3 C和其他游戏开发语言的比较 3. 游戏引擎的选择 3.1 Unreal Engine 3.2 Unity 3.3 游戏引擎对比表 4. 游戏架构设计 4.1 ECS架构 4.2 游戏循环 5. C中的图形编程基础 5.1 DirectX…

Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)题解

A - Seats 思路&#xff1a;从前往后扫&#xff0c;判断有多少个.的左右各有一个# #include<bits/stdc.h> using namespace std; #define int long longint n; string s;signed main() {cin>>n;cin>>s;int cnt0;if(s.size()<3){cout<<0<<&quo…

python中双引号和单引号的区别是什么

python3中的单引号‘’和双引号“”的作用一样。 3个单引号的作用&#xff1a; 1、表示注释 #3个单引号表示注释多行gf_of_archerzon "Wang" print("archerzon的女盆友是",gf_of_archerzon) print("archerzon的女盆友是%s"%gf_of_archerzon)2…

PolarCTF靶场[web]file、ezphp WP

[WEB]file 知识点&#xff1a;文件上传漏洞 工具&#xff1a;Burp Suite、dirsearch 方法一&#xff1a; 根据页面提示&#xff0c;先用dirsearch工具扫一扫 访问/upload.php&#xff0c;发现一个上传区 在访问/uploaded/,再点击Parent Directory&#xff0c;发现链接到首页…

NVIDIA GPGPU的通信架构解析

NVIDIA GPGPU- 通信架构 写在前面 在本部分&#xff0c;我们将深入探讨NVLink、NCCL、NVSwitch和GPGPU之间的紧密联系。重点关注通信系统及其与计算的耦合性&#xff0c;以揭示Nvlink & NVSwitch System在支持NVIDIA GPGPU大规模计算和超大算力方面的重要作用。为了更好地…

新生入门季 | 学习生物信息分析,如何解决个人电脑算力不足的问题?

随着生物信息学在科研和教育中的快速普及&#xff0c;越来越多的新生开始接触基因组测序、RNA分析等复杂计算任务。然而&#xff0c;在面对这些大规模数据时&#xff0c;个人电脑的算力往往显得捉襟见肘。你是否也在为自己的笔记本性能不足而苦恼&#xff1f; 这篇文章将为你提…

【读书笔记-《30天自制操作系统》-27】Day28

本篇的内容不少&#xff0c;主要围绕着文件操作与文字显示展开。 1. alloca函数 在开发文件操作与文字显示之前&#xff0c;需要先做一些准备&#xff0c;引入alloca函数。首先看下面的代码&#xff1a; #include <stdio.h> #include "apilib.h"#define MA…