问题描述:
给定两个有序链表的头指针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。
注:当前的每天一个算法题选自不同的书籍或视频(书籍一般都已购买支持,视频大部分也是付费购买),
一般不会选自其他博客文章。之后会统一整理感谢。
当前主要是通过每天写一些、整理一些,锻炼自己的大脑肌肉灵活性,写代码往往不是最重要的,
重要的是锻炼自己的思维能力。
日拱一卒,“人要自己成全自己”。
来源:https://www.cnblogs.com/heibingtai/p/12628273.html