首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LeetCode -在LeetCode提交时传递的解决方案,但在LeetCode中返回null

LeetCode -在LeetCode提交时传递的解决方案,但在LeetCode中返回null
EN

Stack Overflow用户
提问于 2019-12-16 03:21:31
回答 1查看 274关注 0票数 0

指向问题的链接:https://leetcode.com/problems/intersection-of-two-linked-lists/

这个问题是关于两个单独的链表的交集,我有一个解决方案,它将一个链表中的所有节点放入一个ArrayList中,只需检查另一个链表中的节点是否包含在ArrayList中。该解决方案传递LeetCode提交,但在我的IDE中只返回null。我尝试过测试用例的变体,但它都返回null。下面是这个问题的简短解决方案和我的测试用例之一。

代码语言:javascript
复制
class ListNode {
    int val;
    ListNode next;
    ListNode(int x){
        this.val = x;
        this.next = null;
    }
}

class Solution {
    public ListNode getIntersectionNodeUsingArrayList(ListNode headA, ListNode headB) {
        List<ListNode> list = new ArrayList<ListNode>();

        while(headA != null) {
            list.add(headA);
            headA = headA.next;
        }

        while(headB != null) {
            if(list.contains(headB)) {
                return headB;
            }

            headB = headB.next;
        }

        return null;
    }
public class TwoLL {

    public static void main(String[] args) {
        Solution sol = new Solution();
        ListNode listA0 = new ListNode(4);
        listA0.next = new ListNode(1);
        listA0.next.next = new ListNode(8);
        listA0.next.next.next = new ListNode(4);
        listA0.next.next.next.next = new ListNode(5);

        ListNode listB0 = new ListNode(5);
        listB0.next = new ListNode(0);
        listB0.next.next = new ListNode(1);
        listB0.next.next.next = new ListNode(8);
        listB0.next.next.next.next = new ListNode(4);
        listB0.next.next.next.next.next = new ListNode(5);

        ListNode result = sol.getIntersectionNodeUsingArrayList(listA0, listB0);

        System.out.println(result.val); // should be 8 but it returns NPE since result is null.
        System.out.println(result); // returns null as well, instead of the memory address of the node 

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-16 03:32:38

构建列表的方式不会在它们之间产生交集。属于这两个列表的节点是独立的,没有交集。

代码语言:javascript
复制
listA0 4   ->  1  ->  8 -> 4 -> 5
listB0 5 -> 0 -> 1 -> 8 -> 4 -> 5

在上面,节点8、4、5是不同的ListNode实例。因此,它们是不平等的。

尝试向列表中添加一个公共节点。

代码语言:javascript
复制
ListNode common = new ListNode(10);
listA0.next.next.next.next.next = common;
listB0.next.next.next.next.next.next = common;

此打印结果为10

为了模拟您所提到的情况,下面的内容应该可以工作

代码语言:javascript
复制
ListNode common  = new ListNode(8);
common.next = new ListNode(4);
common.next.next = new ListNode(5);

ListNode listA0 = new ListNode(4);
listA0.next = new ListNode(1);
listA0.next.next = common;


ListNode listB0 = new ListNode(5);
listB0.next = new ListNode(0);
listB0.next.next = new ListNode(1);
listB0.next.next.next = common;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59350154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档