本文主要是介绍《剑指Offer》【注释详细,思路清晰】:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.题目描述
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
题目分析:
1. 两个链表,先遍历第一个链表,将第一个链表的结点存到集合HashMapd的键中,HashMap<ListNode,Integer>是集合类型。
2. 然后遍历第二个链表中的是否包含第一个结点的值
3. 找到结点,返回结点值
2.实现代码
/*两个链表,找出它们的第一个公共结点借助Map集合,键是存储的链表的结点,将第一个链表的结点存进集合中,然后遍历第二个结点,判断集合中是否包含第二个链表的结点
*/
import java.util.*;
public class Solution {public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {//头结点pHead1,pHead2分别指向两个链表的第一个结点ListNode current1 = pHead1;ListNode current2 = pHead2;//使用HashMap的键是结点类型,值是整型,Integer是凑数的HashMap<ListNode,Integer> hashMap = new HashMap<ListNode,Integer>();// 当第一个链表不空的时候,将结点添加到集合中while(current1 != null){hashMap.put(current1,null);current1 = current1.next;}//当第二个链表不空的时候while(current2 != null){if(hashMap.containsKey(current2)){return current2;}current2 = current2.next;}return null;}
}
3. 总结
- HashMap<K,V>Key的值运用,包括containsKey()的使用
- 坚持加油!
这篇关于《剑指Offer》【注释详细,思路清晰】:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!