计算2个链表的交点

import java.util.HashMap;

class Node {
    public Node next;
    public String val;

    public Node(String val) {
        this.val = val;
    }
}

public class Main {
    public static void main(String[] args) {
        // TODO 链表1
        Node rootOne = new Node("one");
        Node node1 = new Node("1");
        Node node2 = new Node("2");
        Node node3 = new Node("3");
        Node node4 = new Node("4");
        Node node5 = new Node("5");

        rootOne.next = node1;
        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;
        node5.next = null;
        printLink(rootOne);

        // TODO 链表2
        Node rootTow = new Node("two");
        rootTow.next = node3; // 相交的点
        printLink(rootTow);

        calXiangJiao(rootOne, rootTow);

    }

    // 打印链表
    public static void printLink(Node root) {
        if (root == null) {
            return;
        }

        System.out.println(root.val);
        Node cur = root;
        while (cur.next != null) {
            System.out.println(cur.next.val);
            cur = cur.next;
        }

        System.out.println();
    }

    // 打印相交的值
    public static void calXiangJiao(Node rootOne, Node rootTwo) {
        HashMap<Node, Boolean> nodeBooleanMap = new HashMap<>();

        Node cur1 = rootOne;
        while (cur1 != null) {
            nodeBooleanMap.put(cur1, true);
            cur1 = cur1.next;
        }

        Node cur2 = rootTwo;
        while (cur2 != null) {
            if (nodeBooleanMap.get(cur2) != null) {
                System.out.println(cur2.val);
                return;
            }
            cur2 = cur2.next;
        }
    }
}

/*
3
 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值