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

佐手、 提交于 2020-04-03 20:09:50

 

问题描述:

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

 

算法实现:

public void printCommonPart(Node head1, Node head2) {    System.out.println("Common Part: ");    while (head1 != null && head2 != null) {        if(head1.value < head2.value) {            head1 = head1.next;        } else if(head1.value > head2.value) {            head2 = head2.next;        } else {            System.out.print(head1.value + " ");            head1 = head1.next;            head2 = head2.next;        }    }    System.out.println();}public class Node {    public int value;    public Node next;    public Node(int value) {        this.value = value;    }}

 

算法解析:

1.仔细审题,得到问题的关键信息,像本题的“有序”、“头指针”等关键字;

2.对于当前题目,通过循环遍历,首先进行非空判断,其中任何一个头指针移动到null,过程即停止;

3.比较两个头结点对应的值,若相等则打印,然后分别后移,否则值小的头指针后移,重新比较,直到有一个(或两个同时)头指针移动到null。

 

注:当前的每天一个算法题选自不同的书籍或视频(书籍一般都已购买支持,视频大部分也是付费购买),

  一般不会选自其他博客文章。之后会统一整理感谢。

  当前主要是通过每天写一些、整理一些,锻炼自己的大脑肌肉灵活性,写代码往往不是最重要的,

  重要的是锻炼自己的思维能力。

  日拱一卒,“人要自己成全自己”。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!