`
javasee
  • 浏览: 973309 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一步一步写算法(之链表重合)

 
阅读更多

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


链表重合是一个好玩的问题。原题目是这样的:有两个链表,那么如何判断这两个链表是不是重合的?至于这个链表在什么时候重合的,这不重要,关键是判断这个链表究竟有没有重合。究竟有什么方法呢?

最简单的方法就是查看两者有没有共同点。那么依次判断就行了。

另外一种方法就是计数的方法,既然链表在某处重合,那么此点访问的次数就是2,所以我们可以依次把两个链表遍历一下,最后查看有没有节点的count为2即可。

从计数的方法,我们可以发现如果两个链表是重合的,那么他们的最后一个节点必然是相同的,所以只要判断最后一个节点是否相同即可。


总结:

1)链表重合的题目虽然简单,但是从不同的角度可以有不同的答案;

2)本题目来自《编程之美》, 如果对解法还有兴趣的朋友可以参考《编程之美》。

分享到:
评论

相关推荐

    贪吃蛇小游戏-(双链表-纯C)

    4. 食物处理:当蛇头与食物重合时,删除食物并重新生成新的食物位置。同时,蛇身增长,将当前蛇头复制为新节点,添加到链表尾部。 5. 游戏循环:持续监听用户输入,执行上述步骤,直到游戏结束。 通过这个贪吃蛇小...

    软件技术基础队与链表

    了解栈和队列的概念及其实现方式对于理解和解决许多计算机科学问题至关重要,特别是在算法设计、编译原理、操作系统、数据结构以及软件开发等领域。通过熟练掌握这些基础知识,可以更有效地解决涉及数据存储、处理...

    【Java数据结构与算法】环形链表及约瑟夫问题

    【Java数据结构与算法】环形链表及约瑟夫问题 环形链表是一种特殊的数据结构,它的尾节点指向头节点,形成了一个闭合的循环。这种结构在解决特定问题时非常有用,例如约瑟夫问题。约瑟夫问题是算法领域的一个经典...

    MIT 6.006 算法导论讲义

    内积衡量两个文档向量间的重合程度,而角度则反映两个文档向量之间的夹角大小,进而间接反映出文档之间的相似度。 - **应用场景**:在文本分析、信息检索、版权检测等领域有着广泛的应用价值。 2. **词频统计**: ...

    常见算法笔试或面试题

    问题:设计一个复杂度为 n 的算法找到链表倒数第 m 个元素。最后一个元素假定是倒数第 0 个。 方法:使用双指针查找,类似于判断链表是否有环的方法,但这次需要找到倒数第 m 个元素。 3. 判断一个 LONG 整形的数 ...

    环形链表介绍以及题目解析-力扣141、142

    这种结构在某些算法问题中有着广泛的应用,例如力扣(LeetCode)上的题目141和142就涉及到环形链表的判断和处理。 在环形链表中,判断是否存在环的常用方法是使用快慢指针。快慢指针的概念是设置两个指针,一个称为...

    数据结构与算法(吴跃)-课后习题参考答案

    **确定性:** 算法的每一步都有明确的操作指令。 3. **可行性:** 算法中的每一步都能有效地被执行。 4. **输入:** 算法至少有一个输入。 5. **输出:** 算法必须至少产生一个输出结果。 - **两个区别:** 1....

    数据结构与算法试题.pdf

    在这些试题中,我们看到多个知识点被考察,包括数据结构的分类、链表的操作、数组与顺序表的特性、栈和队列的概念、排序算法的性质等。 1. 数据结构分为线性结构和非线性结构:线性结构如数组、链表,其中元素顺序...

    计算机图形学-基于weiler-atherton算法的多边形裁剪程序实现

    在编程实现中,一般会使用数据结构如链表或者数组来存储多边形的边,以便于进行遍历和修改。同时,为了处理边界情况,比如边与裁剪窗口平行或重合,需要编写特殊逻辑来确保正确处理。裁剪后的多边形通常会形成多个不...

    基于顶点的复杂多边形求交算法的实现

    4. **边界处理**:有时,多边形的边界可能会重合,这需要特殊处理,以确保正确识别出它们是相交还是完全覆盖。 5. **结果合并**:根据边-边测试、顶点测试和孔洞测试的结果,我们可以计算出两个多边形的交集、并集...

    基于C语言的区域填充算法的实现

    我们把与当前扫描线相交的边称为活性边,并把它们按与扫描线交点 x 坐标递增的顺序存放在一个链表中,称此链表为活性边表(AET)。 在填充过程中,需要正确地判断扫描线与多边形的相交情况,以确定填充的范围。扫描...

    常用C++算法,OIer必备

    在IT领域,特别是对于参与在线竞赛(Online Judges, OI)和算法竞赛的程序员来说,掌握C++语言和高效算法是至关重要的。本篇将详细阐述C++中的常见算法,帮助OIer提升技能水平。 一、基础算法 1. 排序 排序是算法...

    数据结构-程序填空题.doc

    在上述题目中,我们看到两个关于创建单向链表的算法,以及链表操作的问题,包括删除和队列操作。 1. 尾插法建立单向链表: 在`create1`函数中,我们需要创建一个带头结点的单向链表,其中节点按顺序插入。填空部分...

    等值线生成与图形填充算法

    追踪法的原理是首先从绘图区域边界或内部网格的边上求得一个等值点(等值线与网格边的交点),然后由该点出发,判断下一个等值点的坐标,直到下一个等值点落在绘图区域边界上或与起点重合,完成一条等值线的追踪。...

    c语言常见小算法的解题思路.docx

    C语言中,大小写字母间的转换可通过加上或减去32的ASCII码差值来实现: ```c char to_lowercase(char c) { if (c >= 'A' && c ) { return c + 32; } return c; // 如果不是大写字母,原样返回 } char to_...

    c语言常见小算法的解题思路.pdf

    9. **约瑟夫问题**:利用单循环链表,按指定规则出列,每次遍历到m-1个节点时,删除其后继节点,直到链表为空。 10. **栈的全排列出栈序列**:对于n个元素进栈,可能的出栈序列个数可以用组合数表示,即bn = (2n)! ...

    计算机二级基础知识(20211009114421).pdf

    算法必须具备四个基本特征:**确定性**,每一步都有清晰定义,避免歧义;**有穷性**,算法必须在有限步骤后结束;**可行性**,算法应能被执行;**足够的信息**,算法需要有足够的数据来执行。算法由数据对象的操作和...

    图形学实验二《多边形有效边表填充》代码+报告

    依照此原理可以对图形进行扫描线算法扫描转换多边形,其中在判断上述交点时,还会出现扫描线与边重合、扫描线与边的交点为顶点等现象。 目的: 1理解多边形填充的目的 2掌握多边形的各种填充算法 3动态链表的排序...

    贪吃蛇经典算法

    贪吃蛇是一款经典的电子游戏,它的算法实现是计算机科学中的基础教学内容,尤其对于初学者来说,理解并实现贪吃蛇的算法可以帮助他们巩固编程基础。在这个案例中,我们主要探讨的是使用C++语言实现的贪吃蛇游戏。 ...

    贪吃蛇游戏下载资源snake

    3. **碰撞检测**:通过遍历链表检查蛇的头部是否与自身的任何部分重合,或者是否超出游戏区域。如果是,那么游戏结束。 4. **游戏环境更新**:每次蛇移动后,需要更新游戏界面,这通常涉及到遍历链表并根据每个节点...

Global site tag (gtag.js) - Google Analytics