Java 计算数组交集中唯一元素的个数
当我跑步时,我会得到以下信息: 运行任务1问题1 2147483642 它应该返回'2',因为我试图在两个数组的交集中找到唯一元素的数量。请帮忙。 谢谢Java 计算数组交集中唯一元素的个数,java,Java,当我跑步时,我会得到以下信息: 运行任务1问题1 2147483642 它应该返回'2',因为我试图在两个数组的交集中找到唯一元素的数量。请帮忙。 谢谢 公共类分配1问题1{ 公共静态void main(字符串[]args){ int[]a={1,3,2,3,5}; int[]b={1,3,4,1,7,3}; int n=5; int m=6; 系统输出打印(列表交叉点(a、b、n、m)); } 公共静态整数列表交叉点(整数[]a,整数[]b,整数n,整数m){ int i,j,k; int i
公共类分配1问题1{
公共静态void main(字符串[]args){
int[]a={1,3,2,3,5};
int[]b={1,3,4,1,7,3};
int n=5;
int m=6;
系统输出打印(列表交叉点(a、b、n、m));
}
公共静态整数列表交叉点(整数[]a,整数[]b,整数n,整数m){
int i,j,k;
int intersect=0;
对于(i=0;i您被困在无限循环中,因为您将m值增加为m++:
if(duplicate == 1) {
for(k=0; k<m; k++) {
if(a[i] == b[k]) {
intersect = intersect + 1;
}
}
}
if(重复==1){
对于(k=0;k如果你想让你的代码正常工作,你需要为循环修正k
,在循环中你迭代b
数组
if(duplicate==1) {
for(k=0; k<m; k++) { // increase k
if(a[i] == b[k]) {
intersect = intersect + 1;
break; // insert break to avoid duplicates in b array
}
}
}
if(重复==1){
对于(k=0;kimportjava.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
int[]a={1,3,2,3,5};
int[]b={1,3,4,1,7,3};
设置aTmp=资产(a);
总资产(资产(b));
System.out.println(aTmp.size());
}
公共静态集合资产(int…args){
Set tmp=new HashSet();
for(int i:args){
tmp.add(i);
}
返回tmp;
}
}
为什么用n
和m
代替a.length
和b.length
?2147483642几乎是int
的最大值(有符号)在Java中,intersect=intersect+1
语句被反复执行,直到不能再递增为止。因此,这是有道理的。请尝试从内到外工作,调查这是什么原因造成的。在最后一个for循环中,您增加了“m”,必须增加“k”别忘了选择有用的答案,接受最好的答案。:)完整的打字错误…该死的。谢谢。我想写k++@user3245760似乎是的。尝试通过添加日志来发现问题。这是真的,我可以从j=1开始写,而不是从0开始,然后使条件重复==0。不,我想你是对的。我碰巧做了与你显示的相同的编辑。我的代码现在正确吗?哦,等等,这是真的,我们需要j=0当i大于0时与i进行比较。我应将其更改回j=0,如果(重复=1)?是,但返回j=0
和duplicate==1
。
if(duplicate == 1) {
for(k=0; k<m; k++) {
if(a[i] == b[k]) {
intersect = intersect + 1;
}
}
}
import java.util.HashSet;
import java.util.Set;
public class Del {
public static void main(String[] args) {
int[] a = { 1, 3, 2, 3, 5 };
int[] b = { 1, 3, 4, 1, 7, 3 };
// duplicates removed by SET
Set intersect = new HashSet();
for (int aVal : a) {
for (int bVal : b) {
if (aVal == bVal) {
intersect.add(aVal);
System.out.println("->" + aVal);
}
}
}
System.out.println("Size =" + intersect.size());
}
}
if(duplicate==1) {
for(k=0; k<m; k++) { // increase k
if(a[i] == b[k]) {
intersect = intersect + 1;
break; // insert break to avoid duplicates in b array
}
}
}
public class assignment1question1 {
public static void main(String[] args) {
int[] a = {1,3,4,3,5};
int[] b = {1,3,4,1,7,3};
System.out.print(listIntersection(a,b));
}
public static int listIntersection(int[] a, int[] b) {
int intersect = 0;
for(int i = 0; i < a.length; i++) {
boolean duplicate = false;
for (int j = 0; j < i; j++) {
if(a[i] == a[j]) {
duplicate = true;
break;
}
}
if (!duplicate) {
for(int k = 0; k < b.length; k++) {
if (a[i] == b[k]) {
intersect++;
break;
}
}
}
}
return intersect;
}
}
import java.util.*;
public class HelloWorld {
public static void main(String []args) {
int[] a = {1,3,2,3,5};
int[] b = {1,3,4,1,7,3};
Set<Integer> aTmp = asSet(a);
aTmp.retainAll(asSet(b));
System.out.println(aTmp.size());
}
public static Set<Integer> asSet(int... args) {
Set<Integer> tmp = new HashSet<Integer>();
for (int i : args) {
tmp.add(i);
}
return tmp;
}
}