牛客网——两个链表的第一个公共结点
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;
}
}
解法思路:
从第一个公共结点开始,后面的结点都会相同,那么可以考虑用栈来存储两个链表。
然后依次将栈顶相同的结点输出去,用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;
}
}
相关文章推荐
- 两个链表的第一个公共结点(牛客网二十三)
- 牛客网刷题之 两个链表的第一个公共结点
- 两个单向链表,找出它们的第一个公共结点
- 剑指offer——面试题37:两个链表的第一个公共结点(哈希,栈)
- 找出两个链表的第一个公共结点
- [Python]两个链表的第一个公共结点 解题思路
- 剑指offer(33)-两个链表的第一个公共结点
- LeetCode 160. Intersection of Two Linked Lists(两个链表的第一个公共结点)
- 输入两个链表,找出它们的第一个公共结点
- 每天一道算法题11 找出两个链表的第一个公共结点
- 【剑指Offer-时间效率的平衡】输入两个链表,找出它们的第一个公共结点。
- 面试题37:两个链表的第一个公共结点
- 两个链表的第一个公共结点,三种方法~
- 面试题37:两个链表的第一个公共结点
- 【剑指Offer】面试题37:两个链表的第一个公共结点
- 找两个链表的第一个公共结点
- 两个链表的第一个公共结点
- 两个链表的第一个公共结点
- 两个链表的第一个公共结点
- 【剑指offer】两个链表的第一个公共结点