gpt4 book ai didi

java - 两个数组的交集(索引越界异常)

转载 作者:行者123 更新时间:2023-12-01 16:35:27 25 4
gpt4 key购买 nike

我想计算两个数组的交集。我的实现导致行中的 ArrayIndexOutOfBoundException.. a[index++]=nn.。请帮我找出错误:

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
int n;
Set<Integer> s1=new HashSet<Integer>();
Set<Integer> s2=new HashSet<Integer>();
int a[]=new int[Math.abs(s1.size()-s2.size())];
int index=0;
if(nums1.length==0|| nums2.length==0){
return a;
}
for(int n1:nums1){
if(!s1.contains(n1))
s1.add(n1);
}
for(int n2:nums2){
if(!s2.contains(n2))
s2.add(n2);
}
for(int nn:s1){
if(s2.contains(nn))
a[index++]=nn;
}
return a;
}
}

最佳答案

您已经非常接近解决方案了:您必须使用 Set 方法 retainAll对于如下交叉路口:

public static int[] intersection(int[] nums1, int[] nums2) {
if (nums1.length == 0 || nums2.length == 0) { return null; }
Set<Integer> s1 = new HashSet<Integer>();
Set<Integer> s2 = new HashSet<Integer>();

for (int n1 : nums1) { s1.add(n1); }
for (int n2 : nums2) { s2.add(n2); }

s1.retainAll(s2);
if (s1.isEmpty()) { return null; }
int[] result = new int[s1.size()];
int i = 0;
for (int n : s1) { result[i++] = n; }
return result;
}

设置 add无需检查要添加的元素是否已存在于您的集合中。我选择在至少一个数组为空或者它们的交集也为空的情况下返回 null

关于java - 两个数组的交集(索引越界异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61958807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com