感谢azuryy提供《编程之美》3.6节“链表相交”扩展问题答案

(原博客地址:http://hi.baidu.com/azuryy/blog/item/18e85b02ec34a4094bfb51de.html)

扩展1:链表1 步长为1, 链表2步长为2 ,如果有环且相交则肯定相遇,否则不相交

list1 head: p1

list2 head: p2

while( p1 != p2 && p1 != NULL && p2 != NULL )

{

p1 = p1->next;

if ( p2->next )

p2 = p2->next->next;

else

p2 = p2->next;

}

if ( p1 == p2 && p1 && p2) //相交

else //不相交

扩展2:在判断是否相交的过程中要分别遍历两个链表,同时记录下各自长度。

Node* step( Node* p, Node* q)

{

if ( !p || !q )

return NULL;

int pLen = 1;

int qLen = 1;

bool result = false;

while( p->next )

{

pLen++, p = p->next;

}

while( q->next )

{

qLen++, q = q->next;

}

result = ( p == q );

if ( result )

{

int steps = abs( pLen - qLen);
Node* head = pLen > qLen ? p : q;
while ( steps ) //对齐处理
{
    head = head->next, steps--;

}

pLen > qLen ? p = head : q = head;

while ( p != q )

{

p = p->next, q = q->next;

}

reutrn p;

}

return NULL;

}

转载于:https://www.cnblogs.com/bvbook/archive/2008/07/30/1256289.html

《编程之美》读书笔记(十):“链表相交”扩展问题相关推荐

  1. 编程之美 - 读书笔记 - 卖书折扣问题的贪心解法

    <编程之美>读书笔记(四):卖书折扣问题的贪心解法 每 次看完<编程之美>中的问题,想要亲自演算一下或深入思考的时候,都觉得时间过得很快,动辄一两个小时,如果再把代码敲一遍的话 ...

  2. 【编程之美/读书笔记】Chapter 1 游戏之乐

    这里就不写每个问题的题目了,只是记录一下自己的总结和心得. 1.1 让CPU占用率听你指挥 这个题目我刚接触的想法是和多核多线程要扯上关系的,因为自己写个死循环只能跑到CPU 35%左右的占用率,但是 ...

  3. Java并发编程之美读书笔记-并发编程基础2

    2019独角兽企业重金招聘Python工程师标准>>> 1.线程的通知与等待 Java中的Object类是所有类的父亲,鉴于继承机制,Java把所有类都需要的方法放到了Object类 ...

  4. 编程之美读书笔记2.1—求二进制数中1的个数

    解法一: 可以举一个8位二进制的例子.对于二进制操纵,我们除以一个2,原来数字就会减少一个0(向右移一位).如果除的过程中有余,那么久表示当前位置有一个1. 以10100010为例: 第一次除以2时, ...

  5. 编程之美--读书笔记--返回一个数组中所有元素被第一个元素除的结果

    笔试题目1:写一个函数,返回一个数组中所有元素被第一个元素除的结果 很多人会想到如下: void DivAarry(int *pArray,int size) { for(int i=size-1;i ...

  6. 编程之美读书笔记之-高效率的安排见面会

    问题一: n个同学,分别对m个招聘见面会感兴趣.为了满足所有学生的要求,hr希望让每个同学都能参加自己所有感兴趣的见面会.然后每个见面会的时间为t.问如何安排见面会能够使得所有见面会总的时间最短. 建 ...

  7. 中国象棋将帅问题java_编程之美读书笔记1.2——中国象棋将帅问题

    http://blog.csdn.net/pipisorry/article/details/36380669 问题:下过中国象棋的朋友都知道,双方的"将"和"帅&quo ...

  8. 编程之美 - 读书笔记 - 烙饼问题与搜索树

    前 面已经写了一些关于烙饼问题的简单分析,但因为那天太累有些意犹未尽,今天再充实一些内容那这个问题研究透.我想,通过这篇文章,我们就可以把这一类问题 搞懂.再遇到优化问题,如果我们想不到别的办法,就可 ...

  9. 编程之美读书笔记_1.1_让CPU占用率曲线听你指挥

    题目:写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况:   1.    CPU的占用率固定在50 ...

最新文章

  1. Java性能优化推荐书!RocketMQ消息丢失场景及解决办法
  2. Industry AI Live | 行为动作定位的算法流程介绍与分享
  3. 金陵科技学院计算机开设课程,金陵科技学院各专业介绍
  4. ie6使用绝对定位position:absolute,box不显示
  5. Golang实践录:调用C++函数的优化
  6. java判断long 大于0_JAVA的一道习题:找出五个大于Long.MAX_VALUE的素数
  7. MySql(15)——Mysql在高并发情况下,防止库存超卖而小于0的解决方案
  8. http协议-响应和请求
  9. html音乐if代码如何使用,关于html:如何在带有JavaScript代码的if条件中使用函数方法?...
  10. ctr预估之特征工程
  11. Linux中关于链表的遍历
  12. win7 ie11降级ie8
  13. 华为任正非《一江春水向东流》读后感
  14. java堆是什么意思_java中的“堆栈”是什么意思?
  15. frps port unavailable
  16. H-Chat:用户私聊群聊管理
  17. 崩坏3区号+86_86的区号是代表中国!那82是代表哪个国家?
  18. Nature新子刊创刊首发综述论文:这是你常听到的贝叶斯统计与建模
  19. Android 10 根文件系统和编译系统(十八):Android.bp语法
  20. 【无标题】Nginx的简单小节

热门文章

  1. ngx_lua模块API说明
  2. 在mac中导入hadoop2.6.0源代码至eclipse
  3. Apache Avro
  4. asp.net core 系列之webapi集成EFCore的简单操作教程
  5. 设计模式之装饰者模式(一)
  6. 如何在WebPart中访问页面上的其他WebPart
  7. [js高手之路] vue系列教程 - vue的事件绑定与方法(2)
  8. 线程间的通信方式1--共享变量(内存)
  9. 【BZOJ 2744 】[HEOI2012]朋友圈
  10. ios 自动内存管理 ARC