C语言:带你轻松干掉 腾讯笔试大题 带环链表
链表的分类:
链表的种类总共有八种情况有以下组成 (带头/不带头 单向/双向 循环/不循环)
带环链表与循环链表不同 带环链表 不好找到入环的节点 它是在中间进入循环,而循环链表你只需遍历它的下一个是不是头就能找到了
所以内 带环链表是非常危险的,因为你一旦去运行 就肯定是死循环的 而且我们还不知道这个环是从哪里开始的 了解完带环链表的结构后 我们来看一下这个题目
这个是判断有无环力扣
这个是判断有无环并返回入环的节点力扣
这两个题的过程十分的简单但你要明白其中的道理还是有点难度的
首先给大家提一下 这个题是用 快慢指针
快慢指针 -- > fast / slow
提个问题 :
如果 fast 一次走 2 步 slow 一次走 1 步 进环后 fast 能追上 slow 嘛
如果 fast 一次走 3 步 slow 一次走 1 步 进环后 fast 能追上 slow 嘛
如果 fast 一次走 4 步 slow 一次走 1 步 进环后 fast 能追上 slow 嘛
能得话请证明? 不能请说明理由? 这道题更重要的是证明
大家可以思考一下其实 x 的长度就是当slow进环时fast与它的距离:每一次fast与slow的距离减一, 那slow每次走1步, 走了x步被追上, 不就是经过了x次嘛,经过了x次被追上而每一次他们的距离都会减一 是不是减去的距离是 x*1, 这减去的距离不就是 slow进环时fast与它的距离 嘛 怎么样这样说大家能理解嘛 (注意这里我们设定的是fast走2步 slow走1步 这样fast才是肯定能够追得上slow的)(看上面的的图理解不清楚的话可以看看下面的图)
这里的相对速度V取1时这些等式才是肯定成立的 换成其他就有可能不成立了写在这儿主要为了方便大家理解
根据之前得出的结果到相遇时 slow走L+X步 fast走L+N*C+X步
因为fast每次比slow多走一步 最终相遇的时候 fast走过的距离是slow走过的距离的二倍
2×(L+X)=L+N*C+X
得出L+X=N*C
这个公式是有用处的哦 在我们解决寻找入环点这个问题时会对我们有帮助
再推导 L=N*C-X => 意味着再相遇的地方(meet) 和 链表开头的地方 (head) 两个指针会在入环点相遇:
这个等式的意思: meet和head同时走 meet走之前N-1圈加上Z的距离与head在入环点相遇
现在来看我们的这两道题:
这样咱们的带环链表就解决了 其实还有另一种方法 要借用到两个链表找相交点的知识点就留给大家去思考了
感谢大家能够看到这里 !祝大家都能收到自己心仪大厂的offer !事业进步!学业进步!
C语言:带你轻松干掉 腾讯笔试大题 带环链表相关推荐
- 2015腾讯笔试大题
今天做完腾讯的在线笔试,感觉自己弱爆了,选择题部分考得比较基础,但是考的面比较广,数据结构,计算机网络,算法常识,概率题,C,C++,都有.大题如下: 在一组数的编码中,若任意两个相邻的代码只有一位二 ...
- 子集全排列组合数问题(带你轻松拿捏十一道OJ题)
目录 一.子集 二.子集II 三.全排列 四.全排列II 五.字符全排列 六.字符串大小全排列 七.组合总和 八.组合总和II 九.组合总和III 十.组合总和IV 十一.递增子序列 一.子集 剑指 ...
- Python——腾讯笔试编程题(函数练习)
题目需求: 对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如: f(13) = 1的2次方 + 3的2次方 = 10 f(207) = 2的2次方+ 0的2次方+ 7的2次方= 53 下 ...
- 腾讯笔试编程题,贪吃的小Q(二分查找)
问题描述 小Q的父母要出差N天,走之前给小Q留下了M块巧克力.小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力. 输入描 ...
- 老猪带你玩转自定义控件三——sai大神带我实现ios 8 时间滚轮控件
ios 8 的时间滚轮控件实现了扁平化,带来很好用户体验,android没有现成控件,小弟不才,数学与算法知识不过关,顾十分苦恼,幸好在github上找到sai大神实现代码,甚为欣喜,顾把学习这个控件 ...
- 腾讯笔试算法题-开锁
题目:有n 把钥匙,m 个锁,每把锁只能由一把特定的钥匙打开,其他钥匙都无法打开.一把钥匙可能可以打开多把锁,钥匙也可以重复使用. 对于任意一把锁来说,打开它的钥匙是哪一把是等概率的.但你无法事先知道 ...
- Java算法:牛客网腾讯笔试真题算法Java版1-11题
题号 题目 知识点 难度 通过率 QQ1 生成格雷码 递归 简单 22.61%QQ2 微信红包 模拟 简单 25.61%QQ3 编码 字符串模拟 中等 26.60%QQ4 游戏任务标记 模拟 中等 3 ...
- 从一道腾讯笔试编程题看——并查集
题目描述 现有个用户,编号问1-,现在已知有m对关系,每一对关系给你两个数x和y,代表编号为x的用户和编号为y的用户是在一个圈子中,例如:A和B在一个圈子中,B和C在一个圈子中,那么A,B,C就在一个 ...
- proe常用c语言语句,带你轻松搞懂Proe条件语句
原标题:带你轻松搞懂Proe条件语句 本文通过几个简单的例子介绍Proe中的条件语句,希望对你能有所帮助.Proe中使用的IF条件语句和C语言中的IF语句原理是一样的,其结构稍有差别.首先我们了解一下 ...
- 尚硅谷Nginx新版升级教程,带你轻松掌握高并发系统架构
摘要:桃李春风一杯酒,江湖夜雨十年灯. "你说有没有一种可能, "你喜欢我,又不好意思说出口, "其实你可以直接说出来的, "我会让你知道什么叫心想事成.&qu ...
最新文章
- Visual Studio 2005 Web Deployment Projects版本不同引发的问题
- react前端开发_是的,React正在接管前端开发。 问题是为什么。
- 往年包场丘赛的北大,今年被清华逆袭了
- C#网页数据采集(一)HtmlAgilityPack
- python教程书籍推荐-买Python入门书籍,我推荐这一本
- mysql linux 下载安装,Mysql 下载 安装 for linux
- 使用DBUA单一实例如何升级至Oracle数据库12c
- 210120 阶段三 fork与阻塞函数
- html突出显示,javascript-记住html页面中突出显示的文本(向html页面添加注释)
- c++ vector拷贝构造_JDK源码分析-Vector
- cdi 2.7.5_集成测试CDI 1.0和Spring 3.1中的作用域bean
- c# combobox集合数据不显示_C#实战036:各种泛型的定义和使用详解
- F28335的ADC采集电压不对(ADC采集模块的输入信号的两个端子是:正极:ADCINAx ,负极是:ADCL0)
- 基于 Elasticsearch 的站内搜索引擎实战
- FPGA仿锆石代码风格组合电路时序电路严格分开之(一)8通道16位AD采集
- API接口防止参数被篡改和重放攻击
- matlab 变量上小尖尖,发动机最中间的那个小尖尖,你猜是什么?
- element-ui vue-quill-editor 富文本编辑器 解决插入图片不采用base64 从服务器传图片在显示返回url
- matlab: 计算程序运行时间
- oracle左关联+号表示方式
热门文章
- Verdi HW/SW co-debug 简单使用
- win7家庭版如何升级到专业版和旗舰版
- 逻辑结构?存储结构?傻傻分不清……
- 在Apple Watch上了解时间旅行
- 解决Chrome账户无法同步
- 电影《失控玩家》:软件2.0,让游戏角色“觉醒”了?
- 数字图像处理实验八--图像分割
- 无论用手工处理还是用计算机进行处理,会计电算化试卷
- 微信公众号开发之上传临时素材
- 灯神动态规划(Dynamic Programing)学习笔记 打劫问题 凑整问题 背包问题 例题+原理+源码超详细讲解