代码
import java.util.Stack;
/**
* @Author: Re
* @Date: 2021/5/18 17:15
* @problem: 两个链表的第一个公共节点
* @methods: 反向查询
*/
public class GetIntersectionNode {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
/**
* 创建两个Stack对象
* Stack和Queue差不多
* Stack先入后出
* Queue先入先出
*/
Stack<ListNode> a = new Stack<>();
Stack<ListNode> b = new Stack<>();
/**
* 将两个链表个节点添加到Stack对象中
*/
for (ListNode cur = headA;cur != null; cur = cur.next) {
a.add(cur);
}
for (ListNode cur = headB;cur != null; cur = cur.next) {
b.add(cur);
}
ListNode newListNode = null;
/**
* 将两个Stack对象进行比较,因为Stack对象值为空时peek和pop方法会产生报错
* 所以这里做个值非空校验
*/
while (!a.isEmpty()&&!b.isEmpty()&&a.peek() == b.peek()) {
newListNode = a.pop();
b.pop();
}
return newListNode;
}
}
运行结果
耗时和内存消耗太多,希望以后能将这样的题做到双90