算法学习笔记(二)----几个算法题,包括链表中的环,单词反转等问题
2014-03-24 00:00
246 查看
小伙伴回来聊了几个算法。
NO 1:如何找到链表中的环,使用快慢指针,比如一个走1步走2步,最后能相遇的就是环;
NO 2:NO 1的升级,如何确定环的起始,这个要推好久:
首先是引入快慢指针,假设环前面有k个节点,环长s。
假设慢指针走到环的起始,即第k,快指针走了2k步(即在环里走了k部),相当于快指针比慢指针快了k部,这时可理解为快指针在环里比慢指针慢了s-k步(这里也要注意考虑s<k的情况)。那么慢指针再走s-k,快的走2(s-k),两者又会相遇,相遇位置就是在环里,据环起始s-k的位置。
推论结束,所以算法就是,让他们第一次相遇,位置就在(据环起始位置s-k步)。从这个位置开始,让慢指针回到起点走k步,让快指针1步1步走也走k步,这样他们能再次相遇,且相遇在环的起始位置。(算法真的很强大啊!)
NO 3:单词反转,比如i love you 反转成you love i
觉得想法很强大:先全部字母反转,然后分单词字母反转(检测空格区分单词~)
NO 4:1024瓶药水,其中有一瓶毒药,小老鼠来实验,如果喝到毒药,一周之类会死掉,请用最少的老鼠,最少的天数,找出那瓶毒药。
NO 1:如何找到链表中的环,使用快慢指针,比如一个走1步走2步,最后能相遇的就是环;
NO 2:NO 1的升级,如何确定环的起始,这个要推好久:
首先是引入快慢指针,假设环前面有k个节点,环长s。
假设慢指针走到环的起始,即第k,快指针走了2k步(即在环里走了k部),相当于快指针比慢指针快了k部,这时可理解为快指针在环里比慢指针慢了s-k步(这里也要注意考虑s<k的情况)。那么慢指针再走s-k,快的走2(s-k),两者又会相遇,相遇位置就是在环里,据环起始s-k的位置。
推论结束,所以算法就是,让他们第一次相遇,位置就在(据环起始位置s-k步)。从这个位置开始,让慢指针回到起点走k步,让快指针1步1步走也走k步,这样他们能再次相遇,且相遇在环的起始位置。(算法真的很强大啊!)
NO 3:单词反转,比如i love you 反转成you love i
觉得想法很强大:先全部字母反转,然后分单词字母反转(检测空格区分单词~)
NO 4:1024瓶药水,其中有一瓶毒药,小老鼠来实验,如果喝到毒药,一周之类会死掉,请用最少的老鼠,最少的天数,找出那瓶毒药。
相关文章推荐
- 左程云_算法与数据结构 — 链表问题 — 04反转单向和双向链表
- 左程云_算法与数据结构 — 链表问题 — 05反转部分单链表
- 数据结构与算法之链表(三)单链表反转
- 自己在项目中遇到的几个问题,包括vector的问题,键盘隐藏等
- 链表反转算法
- 最近正准备找工作呢,熟悉下递归算法,做了几个递归的例子包括汉诺塔问题
- 反转一个链表。循环算法
- 经典算法题之就地反转链表
- 有趣的算法问题10——最后一个单词的长度
- 算法导论学习笔记-5.4 概率分析和指示器随机变量的应用-几个有趣的问题
- 几个算法的问题
- ReverseLinkedList,ReverseLinkedList2,链表反转问题
- 链表的几个经典问题
- 关于反转链表的问题
- 最近正准备找工作呢,熟悉下递归算法,做了几个递归的例子包括汉诺塔问题
- 读算法导论遇到的几个问题
- 剑指offer-算法题练习:part17 反转链表
- 字符串算法——反转字符串单词表(Reverse Words in a String)
- 链表问题(3)-- 反转单向和双向链表
- 说说单词智能纠错算法--探讨思考问题的方法