输入两个链表,找出它们的第一个公共结点。
- 利用map集合以及泛型还有哈希表的containsKey的方法找到Key相同的两个,即为公共结点。
- containsKey方法用来判断Map集合对象中是否包含指定的键名。
- 语法 boolean containsKey(Object key)
- 返回值:如果Map集合中包含指定的键名,则返回true;否则返回false。
- 参数:key是要查询的Map集合的键名对象
- 用该方法和哈希表以及泛型可以完美解决这道题。
package edu.xalead;
import java.util.HashMap;
import java.util.Map;
/**
* 输入两个链表,找出它们的第一个公共结点。
* 利用map集合以及泛型还有哈希表的containsKey的方法找到Key相同的两个,即为公共结点。
* containsKey方法用来判断Map集合对象中是否包含指定的键名。
* 语法 boolean containsKey(Object key)
* 返回值:如果Map集合中包含指定的键名,则返回true;否则返回false。
* 参数:key是要查询的Map集合的键名对象
*/
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Test20 {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
ListNode list1=pHead1;
ListNode list2=pHead2;
Map<ListNode,Integer> map= new HashMap<ListNode,Integer>(); //泛型K为ListNode,V可以是任何类型因为与V无关
while(list1!=null){//先将list1输入哈希表。
map.put(list1,null);//构造哈希表将V定为null。
list1=list1.next;
}
while (list2!=null){
if(map.containsKey(list2)){//containsKey方法用来判断Map集合对象中是否包含指定的键名。
return list2;//如果有返回参数中的对象既是公共几点
}
list2=list2.next;//如果没有判断下个结点
}
return null;
}
}