博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指 Offer》——36、两个链表的第一个公共结点
阅读量:2344 次
发布时间:2019-05-10

本文共 1144 字,大约阅读时间需要 3 分钟。

1. 本题知识点

链表

2. 题目描述

输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)

在这里插入图片描述

3. 解题思路

  1. 把两个链表的结点依次压入到两个栈中,这样两个链表的尾结点就位于两个栈的栈顶
  2. 比较两个栈顶的结点是否相同。如果相同,则把栈顶弹出继续比较下一个,直到找到最后一个相同的结点。

4. 代码

public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if (pHead1 == null || pHead2 == null) {
return null; } // 第一个公共结点 ListNode commonNode = null; Deque
stack1 = new LinkedList<>(); Deque
stack2 = new LinkedList<>(); while (pHead1 != null) {
stack1.push(pHead1); pHead1 = pHead1.next; } while (pHead2 != null) {
stack2.push(pHead2); pHead2 = pHead2.next; } while (!stack1.isEmpty() && !stack2.isEmpty()) {
// 当两个栈顶元素相等时,即为公共结点 if (stack1.peek() == stack2.peek()) {
commonNode = stack1.peek(); stack1.pop(); stack2.pop(); continue; } // 当两个栈顶元素相等时,返回的就是第一个公共结点 return commonNode; } return commonNode; }}

转载地址:http://gyjvb.baihongyu.com/

你可能感兴趣的文章
IDEA eclipse 控制台日志输出到文件
查看>>
1022. Fib数列
查看>>
一些开源项目
查看>>
将博客搬至CSDN
查看>>
MySQL 中事务的实现
查看>>
CheckStyle
查看>>
IDE配置jvm参数
查看>>
内存溢出
查看>>
Spring Cloud 声明式服务调用 Feign
查看>>
JVM实用参数(一)JVM类型以及编译器模式
查看>>
spring cloud config 属性加解密
查看>>
rabbitmq安装
查看>>
RabbitMQ 使用
查看>>
动态代理
查看>>
oracle中merge into用法解析
查看>>
MySQL Explain详解
查看>>
oracle性能监控
查看>>
Spring Boot 整合Servlet
查看>>
Spring Boot 整合Filter
查看>>
nginx 安装
查看>>