题目

  给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。

分析

  链表可能为空也可能非空,而对于空链表程序不需要进行任何操作;若是非空链表,因为链表有序,所以要么是递增,要么是递减。

  假设两个链表元素是有序递增,用head1和head2依次访问链表元素,那么有四种情况:

  1、如果head1的值小于head2的值,则说明需要在链表1的后续节点中寻找公共节点,此时向后移动head1,不必移动head2;

  2、如果head1的值大于head2的值,则说明需要在链表2的后续节点中寻找公共节点,此时向后移动head2,不必移动head1;

  3、如果head1的值等于head2的值,说明当前节点正是这两个链表的公共部分,打印,然后head1和head2同时向后移,寻找下一个公共节点;

  4、如果head1或者head2任何一个移动到null,说明已完成寻找公共节点的过程,此时整个算法结束。

    

 1 public void printCommon(Node head1, Node head2)
 2 {
 3     while(head1 != null && head2 != null)
 4     {
 5         if(head1.value < head2.value)
 6         {
 7             head1 = head1.next;
 8         }
 9         else if(head1.value > head2.value)
10         {
11             head2 = head2.next;
12         }
13         else
14         {
15             System.out.println(head1.value);
16             head1 = head1.next;
17             head2 = head2.next;
18         }
19     }
20 }

来源:左程云老师《程序员代码面试指南》

转载于:https://www.cnblogs.com/latup/p/10872393.html

Coding Interview Guide--打印两个有序链表的公共部分相关推荐

  1. 算法练习day9——190327(“之” 字形打印矩阵、在行列都排好序的矩阵中找数、打印两个有序链表的公共部分、判断一个链表是否为回文结构)

    1."之" 字形打印矩阵 [题目] 给定一个矩阵matrix, 按照"之" 字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 1 ...

  2. 链表之打印两个有序链表的公共部分

    题目:打印两个有序链表的公共部分 package com.chenyu.zuo.linkedList; /*** 打印有序链表的公共部分* @author 陈喻*题目:给定两个有序链表的头指针head ...

  3. 链表问题1——打印两个有序链表的公共部分

    题目 给定两个有序链表的头指针head1和head2,打印两个链表的公共部分. 思路 因为是有序链表假设从小到大,所以从两个链表的头开始进行如下判断: 如果head1的值小于head2,则head1往 ...

  4. 算法-打印两个有序链表的公共部分

    题目要求:给定两个有序链表的头指针node1和node2,打印两个链表的公共部分. 思路:比较简单,用两个指针从头节点开始遍历,比较两个节点的值,有三种情况 1.如果node1的指针指向的值大于nod ...

  5. 打印两个有序链表的公共部分

    [题目] 给定两个有序链表的头指针head1和head2,打印两个 链表的公共部分 思路:因为是有序链表,所以从两个链表的头开始进行如下判断: 如果head1的值小于head2 ,则head1 往下移 ...

  6. 打印两个有序链表的公共部分~~

    类似与归并排序,这里就不再赘述了~

  7. 数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构

    数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构 目录 打印两个有序链表公共部分 判断一个链表是否具有回文结构 1. 打印两个有序链表公共部分 1.问题描述 思路:Node1和N ...

  8. fastreport 打印两个list_Smaller And Smarter Python数据结构:合并两个有序链表

    原创: 老表 简说Python 今日问题 :翻转链表k个相邻结点 """目标:写一段程序,合并两个有序链表例如:输入-> 1->2->3输入-> ...

  9. 2021-10-27 PTA 数据结构 链表 两个有序链表序列的合并

    题目:两个有序链表序列的合并 (本题来自PTA) 以下是AC代码(代码来源于老师所给的题解) #include<stdio.h> #include<stdlib.h> #inc ...

最新文章

  1. php ajax 概率 转盘,php+jquery实现转盘抽奖 概率可任意调
  2. python udp_如何用python方法检测UDP端口
  3. python装饰器函数-python 装饰器 函数被装饰+函数执行
  4. linux页表,arm linux 页表(转)
  5. gRPC in ASP.NET Core 3.x - gRPC 简介(1)
  6. LeetCode 1658. 将 x 减到 0 的最小操作数(哈希)
  7. PearProject 安装指南
  8. 使用单例模式建立一个数据库连接简单示例
  9. python自学教程-3D图示Python标准自学教程入门篇
  10. 【linux多线程】c++多线程的几种创建方式
  11. SOA介绍--什么是SOA?[转载]
  12. NC21499-今天,你惹对象生气了吗(dfs)
  13. JAVA文章相似度对比(hanlp)
  14. 神奇的BUG——MATLAB之1
  15. C语言编程-7_4 字符统计
  16. 自动合并table中相同的单元格以及java自动合并excel相同单元格
  17. 利用 Map-Reduce 从文件中找到出现频率最高的 10 个 URL(2021 VLDB Summer School Lab0)
  18. 驾考一点通维语版_2021驾考宝典维语版
  19. 口袋西游背包数组分析
  20. Java分割字符串、拼接字符串

热门文章

  1. fdquery update
  2. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)
  3. 【POJ】【2449】Remmarguts' Date
  4. TSQL--NESTED LOOPS JOIN
  5. Struts+2权威指南--基于WebWork核心的MVC开发源码下载
  6. shinyapps安装
  7. R语言如何画个性化词云图
  8. 埃及冒险java_我的世界1.7.10亚图姆探险整合包
  9. 安卓如何调出软键盘_如何系统学习手机摄影?这张思维导图告诉你
  10. beanutils工具类_16 个超级实用的 Java 工具类!