脚本宝典收集整理的这篇文章主要介绍了剑指 Offer 52. 两个链表的第一个公共节点,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
一、题目要求
二、题目分析
1.找到相同值,我们可以选择用set来解决问题,用map要定义值,set更快,先遍历headA放到Set里,然后在把B遍历一遍,每个值和set里进行比较,找到输出该值,如果都没有就输出null
2.双指针:借用一下别人的图,注意比较的是物理地址不是数值,就像下图一样;
三、代码分析
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} headA * @param {ListNode} headB * @return {ListNode} */ var getIntersectionNode = function(headA, headB) { let p1 = headA, p2 = headB; if( headA == null || headB == null){ return null; } while( p1 != p2){ p1 = p1 == null? headB:p1.next; p2 = p2 == null? headA:p2.next; } return p1; };
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} headA * @param {ListNode} headB * @return {ListNode} */ var getIntersectionNode = function(headA, headB) { let tmp = new Set(); while( headA != null){ tmp.add(headA); headA = headA.next; } while( headB!=null){ if(tmp.has(headB)){ return headB; } headB = headB.next; } return null; };
四、其他
1.在写双指针,用了两个if else 结果会超时
以上是脚本宝典为你收集整理的剑指 Offer 52. 两个链表的第一个公共节点全部内容,希望文章能够帮你解决剑指 Offer 52. 两个链表的第一个公共节点所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。