编程集训【第二天】-链表

一、基础知识

单链表:是指通过一组任意的存储单元来存储线性表中的数据元素。为了建立起数据元素间的线性关系,对每个链表结点,除了存放元素自身的信息之外,还需要存放一个指向其后继的指针。
【注】为了操作的方便,在单链表第一个结点之前附加一个结点,称为头结点。头结点的数据域可以不设任何信息,也可以记录表长等相关信息。

二、142-环形链表 II

题目描述:
题目描述

解法一:快慢指针法

  1. 使用两个指针,一个快指针,步长为2;另一个慢指针步长为1.若此链表存在环,则两个指针必然相遇。打个简单的比方:操场上两个人跑步,一个人的速度是另一个人速度的两倍,他们必然相遇!
  2. 存在环后,将其中一个指针置为头结点,则他们再次相遇时的结点必然是环的起点(具体推导建议百度)

代码:
在这里插入图片描述

运行结果:
在这里插入图片描述

解法二:哈希表
使用哈希的方法,将已访问的结点放入结合中,然后结点一直后移,当某个节点已经存在集合中时,说明链表存在环并且该节点就是环的起点

代码:

运行结果:
在这里插入图片描述

三、206-反转链表

题目描述:
在这里插入图片描述

代码:
在这里插入图片描述
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值