LeetCode 160 Intersection Of Two Linked Lists 相交链表 Java

打印 上一主题 下一主题

主题 951|帖子 951|积分 2853

题目:找到两个相交列表的起始点,如图c1开始为A和B两个链表的相交点


举例1:8为两个链表的相交点。 注意:相交不止是数值上的相同。


举例2:2为相交点


举例3:没有相交点


解题思绪:
相交证明最后一段链表路径完全一样,所以我使用栈先辈后出的特性,把两个链表都放入栈中,然后将其相同部分放入一个新的栈中,遇到不一样的节点就结束循环。 最后重新的栈后进先出的原理,重新取到相交点的起初节点及完备路径。
  
  1. /**
  2. * Definition for singly-linked list.
  3. * public class ListNode {
  4. * int val;
  5. * ListNode next;
  6. * ListNode(int x) {
  7. * val = x;
  8. * next = null;
  9. * }
  10. * }
  11. */
  12. public class Solution {
  13.     public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
  14.         //将链表A与B分别放入栈A与B中
  15.         Stack<ListNode> stackA = new Stack<>();
  16.         while (headA != null) {
  17.             stackA.push(headA);
  18.             headA = headA.next;
  19.         }
  20.         Stack<ListNode> stackB = new Stack<>();
  21.         while (headB != null) {
  22.             stackB.push(headB);
  23.             headB = headB.next;
  24.         }
  25.         //从链表的最后一个位置开始比较相同节点,相同的话放入新的栈中,不同的话结束比较
  26.         Stack<ListNode> intersectStack = new Stack<>();
  27.         while (!stackA.isEmpty() && !stackB.isEmpty()) {
  28.             ListNode currectA = stackA.pop();
  29.             ListNode currectB = stackB.pop();
  30.             if (currectA == currectB) {
  31.                 intersectStack.push(currectA);
  32.             } else {
  33.                 break;
  34.             }
  35.         }
  36.         //将相交栈中的数据取出,重新拼成链表
  37.         if (intersectStack.isEmpty()) {
  38.             return null;
  39.         }
  40.         ListNode newHead = intersectStack.pop();
  41.         ListNode currect = newHead;
  42.         while (!intersectStack.isEmpty()) {
  43.             currect.next = intersectStack.pop();
  44.             currect = currect.next;
  45.         }
  46.         currect.next = null;
  47.         return newHead;
  48.     }
  49. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表