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

来源:互联网 发布:数据对接的接口及方式 编辑:程序博客网 时间:2024/05/29 19:43

输入两个链表,找出它们的第一个公共结点。


解法思路:

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

然后依次将栈顶相同的结点输出去,用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;    }}


0 0