【问题标题】:how do java set judge the similar ListNodejava set如何判断类似的ListNode
【发布时间】:2021-05-18 11:19:18
【问题描述】:

当我从 Leetcode 解决问题Intersection of Two Linked Lists 时,我发现 HashSet 解决方案在我的计算机上不起作用。 返回结果始终为 null,但在 Leetcode 上运行良好。

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
    Set<ListNode> hashSet = new HashSet<ListNode>();
    ListNode curNode = headA;
    while (curNode!=null){
        hashSet.add(curNode);
        curNode=curNode.next;
    }
    curNode=headB;
    while (curNode!=null){
        if (!hashSet.add(curNode)){
            return curNode;
        }
        curNode=curNode.next;
    }
    return null;
}

【问题讨论】:

    标签: java set hashset


    【解决方案1】:

    问题不是来自您计算机上的 HashSet,而是来自输入示例,请确保您在 2 LinkedList 上的 Intersection 部分使用了相同的 ListNode 实例,例如

    ListNode n = new ListNode(1);
    ListNode n2 = new ListNode(2);
            
    ListNode n3 = new ListNode(3);
    n.next = n3;
    n2.next = n3;
    

    现在 n 和 n2 的下一个将是同一个实例,因此当 HashSet 尝试添加 n3 时,它将返回 false 并且您的代码将返回它,

    另一种解决方案是覆盖 equalshashcode ListNode 类,以便 HashSet 将按值比较节点,您可以使用具有相同值的不同实例,您的代码将正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2022-01-22
      相关资源
      最近更新 更多