LeetCode141:链表相关问题

力扣hot100二刷——链表 第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。 阅读详情

针对链表问题涉及到链表的快慢指针:

快指针的速度为2,慢指针的速度为1

判断链表是否有环:

若无环,则最终快指针会指向空
若有环,快慢指针会相遇 ,因为快慢指针只是每次都只差了一步,当差了R步的时候肯定会相遇(R为环的周长)

若有环:

1)判断环的大小->在证明链表是否有环的过程中,快慢指针第一次相遇。此后,快指针继续按一次两步的速度走,慢指针按一次一步的速度走,并设置一个计数器count = 0,每走一次加1,。当快慢指针再次相遇时,快指针刚好比慢指针多走了R步,而计数器count == R。

2)环的入口:

首先,计算快慢指针相遇位置。因为慢指针在刚进入环时距离快指针delta步,所以快指针还需要比慢指针多走R - delta步才能与慢指针相遇。又因为快指针每次走两步,所以快指针还需要走2(R - delta)步。那么,相遇位置为2(R - delta) + delta == 2R - delta,即,距离环入口delta处,与慢指针刚进入环时快指针所在位置对称。 

然后,快指针重新从头结点开始走,速度为一次一步,与慢指针相同。可知,快指针走到环入口时,所需步数为k。刚好,k == delta + n * R,这也是慢指针在环中所走的距离。由快慢指针在环中的相遇位置可知,慢指针此时刚好走到了环入口,并与快指针相遇,此时,找到了环入口。

若没有环:

可以求得链表的中点->运用快慢指针,将快慢指针先指向头结点,快指针移动2个步长,慢指针移动1个步长,当快指针指向链表末尾的时候,慢指针刚好就在中间节点上。

 

//用快慢指针计算一个链表是否有环,环的大小,环的入口
/*是否有环:
快指针的速度为2,慢指针的速度为1
若无环,则最终快指针会指向空
若有环,快慢指针会相遇 ,因为快慢指针只是每次都只差了一步,当查了R步的时候肯定会相遇(R为环的周长)*/
#include <stdio.h>
#include <stdlib.h>
struct LinkNode {
	int value;
	LinkNode *next;
};


bool loop(LinkNode * head) {
	//利用快慢指针
	LinkNode * fast = head;
	LinkNode * slow = head;
	int i = 0;
	while (fast && fast->next)//注意这个判断的条件
	{
		fast = fast->next->next;
		slow = slow->next;
		if (fast == slow)
		{
			i = 1;
			break;
		}
	}

	if (i == 1) {
		return true;
	}
	else
	{
		return false;

	}
}

int loopsize(LinkNode * head)
{
	LinkNode * fast = head;
	LinkNode * slow = head;
	while (fast && fast->next)//注意这个判断的条件
	{
		fast = fast->next->next;
		slow = slow->next;
		if (fast == slow)
		{
			break;//第一次相遇
		}
	}
	int count = 0;
	while (fast && fast->next)//达到第二次相遇
	{
		fast = fast->next->next;
		slow = slow->next;
		count++;
		if (fast == slow)
		{
			break;//第一次相遇
		}
		
	}
	return count;
}


int loopentrance(LinkNode * head)
{
	LinkNode * fast = head;
	LinkNode * slow = head;
	while (fast && fast->next)//注意这个判断的条件
	{
		fast = fast->next->next;
		slow = slow->next;
		if (fast == slow)
		{
			break;//第一次相遇
		}
	}
	//调整快指针的速度和位置
	fast = head;
	int node = -1;
	while (fast != slow)
	{
		fast = fast->next;
		slow = slow->next;
	}
	node = slow->value;
	return node;
}


int midpoint(LinkNode * head)
{
	LinkNode * fast = head;
	LinkNode * slow = head;
	while (fast && fast->next)
	{
		fast = fast->next->next;
		slow = slow->next;
	}
	return slow->value;
}



int main(void)
{
	//创建一个有环的链表 ,注意一定要申请空间
	LinkNode  *p1 = (LinkNode*)malloc(sizeof(struct LinkNode));
	LinkNode * p2 = (LinkNode*)malloc(sizeof(struct LinkNode));
	LinkNode * p3 = (LinkNode*)malloc(sizeof(struct LinkNode));
	LinkNode * p4 = (LinkNode*)malloc(sizeof(struct LinkNode));
	LinkNode * p5 = (LinkNode*)malloc(sizeof(struct LinkNode));
	p1->value = 1;
	p2->value = 2;
	p3->value = 3;
	p4->value = 4;
	p5->value = 5;
	p1->next = p2;
	p2->next = p3;
	p3->next = p4;
	p4->next = p5;
	//p5->next = p2; //有环的情况
	LinkNode * p6 = (LinkNode*)malloc(sizeof(struct LinkNode));
	p6->value = 6;
	p5->next =p6;//无环的情况
	p6->next = NULL;

	LinkNode * head = p1;
	printf("判断链表是否有环\n");
	bool isLoop = loop(head);
	if (isLoop) {
		printf("true\n");
		printf("输出环的大小\n");
		head = p1;
		printf("%d \n", loopsize(head));
		printf("判断环的入口结点\n");
		head = p1;
		printf("%d \n", loopentrance(head));
	}
	else{
		printf("false\n");
		printf("寻找中点\n");
		printf("%d \n", midpoint(head));
	}
	
	return 0;
}

附图解释求解环的入口问题:

基于RK3588的YOLOv11目标检测NPU加速系统设计与实现——模型转换(RKNN)、量化与板端部署全流程(含环境搭建与疑难解析) 而RK3588芯片则是一款性能强劲的边缘计算芯片,将YOLOv11部署在RK3588上,可实现本地化的智能检测应用,比如工业质检中的产品缺陷识别、安防领域的异常行为监测等。比如,优化模型的推理速度,可通过调整模型的输入尺寸、使用更高效的推理框架等方式实现;可以使用RK提供的量化工具来完成这一过程,按照工具的使用说明,对ONNX模型进行量化,生成适用于RK3588的模型文件。现在,你已经掌握了从环境搭建到模型部署的全流程,赶快动手实践,让YOLOv11在RK3588上绽放智能光彩,打造属于你的AI应用吧! 阅读详情

相关推荐

S905L3B机顶盒刷Armbian:从安卓Root到eMMC全攻略

在嵌入式开发与轻量级服务器搭建中,ARM架构设备因其低功耗和高性价比备受关注。晶晨S905L3B作为运营商机顶盒的主流芯片,通过刷写Armbian系统可将其改造为ARM小服务器。其原理是利用Amlogic芯片的uboot引导机制,将Linux系统写入eMMC存储,从而脱离原厂安卓限制。这一方案的技术价值在于以极低成本实现Docker容器、下载机、轻量数据库等服务的部署,应用场景涵盖家庭网络广告过滤、智能家居控制、复古游戏机等。本文以CM311-1S为例,详细拆解从安卓9 Root到Armbian写入eMMC

weixin_31476015的博客 340

常见链表问题(整理)

一、数组与链表 作为线性表的两种存储方式 —— 链表和数组,这对相爱相杀的好朋友有着各自的优缺点。接下来,我们梳理一下这两种方式。 数组,所有元素都连续的存储于一段内存中,且每个元素占用的内存大小相同。这使得数组具备了通过下标快速访问数据的能力。但连续存储的缺点也很明显,增加容量,增删元素的成本很高,时间复杂度均为 O(n)。 增加数组容量需要先申请一块新的内存,然后复制原有的元素。如果需要的话,可能还要删除原先的内存。 删除元素时需要移动被删除

weixin_53235104的博客 589

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1099

链表及相关常见问题

链表、常见链表算法问题

CodePanda@GPF的博客 1531

VerilogEval实战指南:从基准测试到模型微调的全流程解析

本文提供了VerilogEval实战指南,详细解析了从基准测试到模型微调的全流程。VerilogEval是一个自动化、标准化的测试框架,用于客观评估大语言模型生成Verilog硬件代码的能力。文章涵盖了环境搭建、核心机制解析、利用其生成合成数据进行模型微调的策略,以及如何将其工程化集成到自动化评估流程中,为硬件设计领域的AI应用提供了完整的方法论。

yy01234的博客 1005

openssl命令数据摘要详解(SM3、sha256、MD5、dss1、mdc2、ripemd160)

SM3是由中国密码学家设计的密码哈希函数,是中国国家密码管理局(National Cryptographic Authority,简称:CNCA)颁布的国家密码算法标准。SM3属于密码杂凑函数家族,它可以计算任意长度的消息并生成固定长度(256比特,即32字节)的哈希值。SM3生成的哈希值长度为256比特(32字节),不管输入消息的长度如何,输出始终是固定的。SM3将输入数据划分为512比特(64字节)的分组,并对每个分组进行处理。

N阶二进制的博客 4460

算法通关村第一关——6个链表经典问题笔记

解算法题一个重要的方法就是把常用的数据结构都套用一遍看是否可行,一般都可以找到比较适合的方法。

m0_61655177的博客 1016

用urdf给自己的ROS小车编写模型

3.3 使用urdf编写自己的ROS小车模型 3.3.1 常见的ROS小车结构有哪些? 下面就是常见的ROS小车,相信在大家的脑海里已经有了自己小车的样子,下面我和大家一起使用urdf对ros小车建模。 这里只对urdf进行简单介绍,然后就带大家使用urdf最基础的标签,建立机器人的urdf机器人模型。关于更多细节,请参看官网:http://wiki.ros.org/urdf/Tutorials 3.3.2 什么是urdf?建模的原因? 什么是urdf? URDF(Unified Robot Descri

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

链表面试问题总结:

**无法高效获取长度,无法根据偏移快速访问元素,是链表的两个劣势。**然而面试的时候经常碰见诸如获取倒数第k个元素,获取中间位置的元素,判断链表是否存在环,判断环的长度等和长度与位置有关的问题。这些问题都可以通过灵活运用双指针来解决。 Tips:双指针并不是固定的公式,而是一种思维方式~ 1.先来看"倒数第k个元素的问题"。设有两个指针 p 和 q,初始时均指向头结点。首先,先让 p 沿着 next 移动 k 次。此时,p 指向第 k+1个结点,q 指向头节点,两个指针的距离为 k 。然后,同时移动 p 和

weixin_43934357的博客 387

RK3588芯片:ALSA音频通路下HDMI与耳机自动切换的技术探索

摘要:本文详细探讨了基于RK3588芯片的HDMI与耳机自动切换方案。文章首先剖析了ALSA音频架构的核心组件与工作原理,接着介绍了RK3588芯片的硬件特性及音频处理优势。重点阐述了自动切换的实现原理,包括硬件检测机制、ALSA驱动处理逻辑和软件控制流程,并提供了详细的配置步骤。同时针对常见问题如切换异常、音频质量下降等给出了解决方案。该方案通过合理配置设备树和ALSA文件,实现了音频输出的智能切换,提升了用户体验,展现了RK3588在音频处理领域的强大性能。未来随着AI音频技术的发展,该方案在智能家居、

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 266

热力学仿真软件:Fluent_(8).材料属性设置

在 Fluent 中,材料属性主要包括密度、比热容、导热系数、黏度等物理性质。这些属性在不同的仿真场景中有着不同的作用,例如在流体仿真中,密度和黏度是必不可少的;在传热仿真中,导热系数和比热容是主要考虑的因素。如果所需的材料不在材料库中,或者需要对现有材料进行修改,用户可以自定义材料属性。在主菜单中选择Materials。点击打开材料编辑器。在材料编辑器中,点击Create按钮,输入新的材料名称。选择材料类型(如FluidSolid等)。在属性栏中填写所需的材料属性。

kkchenjj的博客 1493

【链表及其经典问题】

假设head节点距离环的起点为a,当慢指针走到环的起点时,快指针距离环的起点也为a,假设此时快指针正向距离环的起点为x,那么当快指针向前走2x步,慢指针走x步时,他们两个相遇。顺序遍历链表,将其中的节点依次存入哈希表中,如果要存入的节点已经存在于哈希表中,则说明有环,遍历结束。因为环的总长度为a+x,因此此时他们距离环的起点距离为a,与起始点到环起点的距离相同。如果链表有环,那么快慢指针一定会相遇,指向同一个节点,当向同一个节点时,遍历结束。链表中的每个节点,通过指针域的值,形成一个线性结构。...

chenjunheaixuexi的博客 466

SAP Fiori 会话超时全解析:从 Launchpad 到 Identity Authentication 的统一策略

SAP Fiori会话超时机制解析与配置策略 本文深入探讨SAP Fiori项目中的会话超时机制,分析其对系统安全和用户体验的双重影响。文章系统拆解了SAP Fiori Launchpad与SAP Cloud Identity Services之间的会话超时工作原理,重点介绍了两种超时机制:服务器驱动的超时(通过SESSION_TIMEOUT_STOP_DATA_REFRESH参数控制)和UI驱动的超时(通过SESSION_TIMEOUT_INTERVAL_IN_MINUTES参数控制)。文中结合制造业产线

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

力扣labuladong——一刷day02

len ++;p = head;j < i;return p;快慢指针遍历一次/*** int val;* }*/for(;p2!= null;return p1;

ResNet156的博客 231

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

链表类(Linked List)

链表类(Linked List) 基础知识 链表如何实现,如何遍历链表。链表可以保证头部尾部插入删除操作都是O(1),查找任意元素位置O(N) 基础题目 题目:Leetcode 206. Reverse Linked List 题解 方法1:迭代 假设链表为1→2→3→∅,我们想要把它改成 ∅←1←2←3。 在遍历链表时,将当前节点的next指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。 class Soluti

weixin_43436613的博客 2162

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LeetCode第141题_环形链表

给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。

qq_40263592的博客 2386

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode 141题:环形链表的艺术与科学

本文探讨了LeetCode 141题环形链表的两种解法:哈希表法和快慢指针法。哈希表法通过记录访问节点判断环存在,时间复杂度O(n),空间复杂度O(n);快慢指针法则利用双指针速度差检测环,空间复杂度优化至O(1)。文章通过图示和代码展示了两种方法的实现细节,强调了边界条件处理和算法思维与代码实现的分离。两种方法各有优势,哈希表法直观易懂,快慢指针法则空间高效,掌握这两种方法为解决更复杂链表问题奠定了基础。

软件科学-郝学胜 2063

Leetcode 141. 环形链表

Leetcode 141. 环形链表1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/linked-list-cycle/   可以使用快慢指针求解。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #include "algorith

珍惜 8999

蓝桥与力扣刷题(141 环形链表)

第二种解题思路+代码:(哈希表)引用力扣(作者:数据结构和算法 题解:https://leetcode.cn/problems/linked-list-cycle/solutions/438358/3chong-jie-jue-fang-shi-liang-chong-ji-bai-liao-10/)在该篇题解中,作者编写多种方法来解答环形链表,除了快慢指针和哈希表,还有反转链表和链表节点逐个删除的方法,对我而言大佬的多种解法帮我扩充了知识面(大家有兴趣也可以去搜索)。指针再次到达,则链表中存在环。

旧栎 1583

链表经典面试题02--链表的带环问题

中均有详细讲解,大家可以先看看,这里就不过多介绍,简而言之就是定义两个指针,一个为慢指针,一次走一步,一个为快指针,一次走两步,当它们两个相遇时,即为环形链表,快慢指针法在链表中很常见,大家一定要牢牢掌握.当slow进入环中,fast和slow相距为N,现在fast要追slow,fast每次二步,slow每次一步,每追击一次,它们两个的距离就减一,直到它们两个相遇,所以它们两个一定会相遇.我们知道,在不带环链表中,它们两个永远都不会相遇,所以我们只需要在带环链表中去证明。指针再次到达,则链表中存在环。

wer24_25的博客 1426

leetcode 141. 环形链表

''' leetcode 141. 环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 与链表有关的算法题通常会用到双指针或快慢指针 每迭代一次,快指针faster向前走两步,慢指针slow向前走一步 如果链表中不包含环状结构,则快指针一定比慢指针先到达链...

WYXHAHAHA123的博客 213

尼尧的算法日记:相交链表/环形链表(LeetCode 160/141)

都说不会算法的只能算是个CRUD工具人,而学会算法,不仅能提高解题思路,培养逻辑思维,也是提高自己的必经之路。 况且要去中大型公司,笔试总免不了手撕算法题。 本系列将把自己解题的过程和思路记录下来,也是提高自己算法能力的一种方式。 尼尧的算法日记:相交链表/环形链表相交链表/环形链表的情形解题思路Hash表法 相交链表/环形链表的情形 相交链表 以下为单链链表存在相交的实例,编写一个程序,找到两个单链表相交的起始节点。(LeetCode.160 相交链表) 环形链表 存在单链表中尾部节点接到链

尼尧Nier的博客 523

【LeetCode】141.环形链表、142. 环形链表 II(算法 + 图解)

环形链表

明志の博客 2514

leetcode 141.环形链表

878.链表的中间节点 ,

2301_79789645的博客 327

力扣链表专题 - 3 双指针专题 leetcode141 142 160 19

四道题 让自己学会双指针解链表问题 [doge]

一碗菜粥的博客 512

leetcode力扣141题环形链表

【代码】leetcode力扣141题环形链表。

xiaohao0001abc的博客 157
上一篇: leetcode 69:求一个数的平方根
下一篇: CSP练习5:买菜
coding_diamond
博客等级 码龄8年 8粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值