zoukankan      html  css  js  c++  java
  • "Coding Interview Guide"--打印两个有序链表的公共部分

    题目

      给定两个有序链表的头指针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 }

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

  • 相关阅读:
    java ssl https 连接详解 生成证书
    mysql实战优化之四:mysql索引优化
    mysql实战优化之五: 更新/插入优化 sql优化
    mysql实战优化之六:Order by优化 sql优化、索引优化
    mina2中IoHandler
    I/O通信模型(BIO,NIO,AIO)
    mina框架详解
    转:架构师于小波:魅族实时消息推送架构
    支付业务的数据库表的设计
    实战 TestNG 监听器
  • 原文地址:https://www.cnblogs.com/OoycyoO/p/10872393.html
Copyright © 2011-2022 走看看