您的位置:首页 > 其它

牛客网——两个链表的第一个公共结点

2017-04-05 21:51 302 查看
输入两个链表,找出它们的第一个公共结点。

解法思路:

从第一个公共结点开始,后面的结点都会相同,那么可以考虑用栈来存储两个链表。

然后依次将栈顶相同的结点输出去,用last结点来保存最后一次相同的结点,当两个栈顶的元素不同时。就可以return了。

public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}*/
import java.util.Stack;
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if(pHead1==null||pHead2==null)return null;
Stack<ListNode> stack1 = new Stack<>();
Stack<ListNode> stack2 = new Stack<>();
ListNode head1 = pHead1 ;
ListNode head2 = pHead2 ;

while(head1!=null){
stack1.push(head1);
head1 = head1.next;
}
while(head2!=null){
stack2.push(head2);
head2 = head2.next;
}
ListNode last = null;
while(true){
if(stack1.isEmpty()||stack2.isEmpty())break;
ListNode p = stack1.pop();
ListNode q = stack2.pop();
if(p==q){
last = p;
}
else {
break;
}
}

return last;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: