您的位置:首页 > 其它

算法学习笔记(二)----几个算法题,包括链表中的环,单词反转等问题

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瓶药水,其中有一瓶毒药,小老鼠来实验,如果喝到毒药,一周之类会死掉,请用最少的老鼠,最少的天数,找出那瓶毒药。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: