Java使用HotSpotVirtualMachine和JMXServiceURL获取JVM进程的内存信息

安装

  返回  

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

2021/7/21 8:33:19 浏览:

两个链表的第一个公共节点

  • 题目
  • 思路
  • 代码
  • 结果

题目

输入两个链表,找出它们的第一个公共节点。
在这里插入图片描述
如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。

思路

这道题其实前段时间出来过那个每日一题,就利用双指针就好了。循环一遍,到了末端就接着往另外的链表的头结点走。
而且主要要不能改变整个链表的结构,如果没有交点,就返回一个null值!

直接复制我以前的代码了!

代码

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
    // 获取两个链表的头结点
        ListNode a=headA;
        ListNode b=headB;

	// 假设两个链表中有一个为空,那么必不存在交点,直接返回null!
        if(a==null || b==null)
        {
            return null;
        }

		// 当a和b不相等的时候,一直是当前链表的下一个节点,一直到null之后,再往下就是没有了,就转到另外一个链表的头结点
		// 这样子,就算没有一个交点。等下一次都走到了各自的null的时候,也就是结束的时候!
        while(a!=b)
        {
            a = (a==null)?headB:a.next;
            b = (b==null)?headA:b.next;
        }
        return a;
        
    }
}

结果

在这里插入图片描述
算是一道简单题,复习了一下链表相交的知识!

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号