题目内容 两个链表的第一个公共结点
该题,和 第一个只出现一次的字符 一样,都用到了java 集合。
尝试一
结果:答案正确:恭喜!您提交的程序通过了所有的测试用例
代码:
import java.util.HashSet;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
/* 特殊情况处理*/
if(pHead1==null || pHead2==null){
return null;
}
/* 遍历pHead1 ,存入Set<ListNode>*/
HashSet<ListNode> store =new HashSet<ListNode>();
ListNode i=pHead1;
while(i!=null){
store.add(i);
i=i.next;
}
/* 遍历pHead2,若map中已经存在了当前节点,则返回当前节点*/
i=pHead2;
while(i!=null){
if(store.contains(i)){
return i;
}
i=i.next;
}
/* 在pHead2中没找到,返回null*/
return null;
}
}
总结
- 利用set可以去重,set的
contains(Object o)
函数可以用来判断o是否存在与set中