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

2021/5/18 18:55:44

本文主要是介绍力扣剑指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;
    }
}

运行结果

在这里插入图片描述

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



这篇关于力扣剑指Offer 52.两个链表的第一个公共节点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程