力扣剑指Offer 52.两个链表的第一个公共节点

代码

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;
    }
}

运行结果

力扣剑指Offer 52.两个链表的第一个公共节点

耗时和内存消耗太多,希望以后能将这样的题做到双90

上一篇:【刷题第六天】递推——C++


下一篇:Davor COCI 2018