gpt4 book ai didi

Java,在整数列表中找到交集

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:59 26 4
gpt4 key购买 nike

我有一个像这样的对象 ArrayList:

{{"ObjectName",[[1,3],[11,24]]},
{"ObjectName2",[[3,4],[5,6],[12,20]]},
{"ObjectName3",[[30,38]]}}

对象由一个字符串(对象名)和整数列表中的多对整数列表组成。

一对整数列表如[11,24]:表示从11cm到24cm,一个长度范围。

我如何使用 Java 代码和 less bigO 检查 1 个对象的长度对是否与其他对象的长度范围有交集。就像 ObjectName2 有一对整数 [12,20] 与 ObjectName 的 [11,24] 相交。

我有一个 sudo 代码有 bigO(n^3):

for(Object o1 : Arraylist){
for(Object o2 : Arraylist){
for(int x = 0; x < o1.lengthlist.size(),x++){

if(o1.lengthlist.get(x)[0]>=o2.lengthlist.get(x)[0]
&& o1.lengthlist.get(x)[1]<=o2.lengthlist.get(x)[1])
{got the intersection part}
}
}
}

最佳答案

我做了一个完整的例子来说明如何去做。

1 级

package intersectioninintegerlist;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
*
* @author Ahmad
*/
public class IntersectionInIntegerList {

public static void main(String[] args) {
List<Pair> lst1 = new ArrayList<>(Arrays.asList(new Pair(1,3), new Pair(11,24)));
Obj obj1 = new Obj("obj1", lst1);

List<Pair> lst2 = new ArrayList<>(Arrays.asList(new Pair(3,4), new Pair(5,6), new Pair(12,20)));
Obj obj2 = new Obj("obj2", lst2);

List<Pair> lst3 = new ArrayList<>(Arrays.asList(new Pair(30,38)));
Obj obj3 = new Obj("obj3", lst3);

List<Obj> objs = new ArrayList<>(Arrays.asList(obj1, obj2, obj3));

for(int i = 0; i < objs.size(); i++){
for(int j = i+1; j < objs.size(); j++){
findIntersect(objs.get(i), objs.get(j));
}
}

}

private static void findIntersect(Obj o1, Obj o2) {
System.out.println(o1.name + " - " + o2.name);
for(Pair p1 : o1.pairs){
for(Pair p2 : o2.pairs){
int A = p1.i1;
int B = p1.i2;
int X = p2.i1;
int Y = p2.i2;
if((A >= X && A <= Y) || (X >= A && X <= B)){
System.out.println(o1.name + " intersects with " + o2.name);
}
}
}
}
}

2级

package intersectioninintegerlist;

import java.util.List;

/**
*
* @author Ahmad
*/
public class Obj {

public String name;
public List<Pair> pairs;

public Obj(String n, List<Pair> p){
name = n;
pairs = p;
}
}

3级

package intersectioninintegerlist;

/**
*
* @author Ahmad
*/
public class Pair {
int i1;
int i2;
public Pair(int _i1, int _i2){
i1 = _i1;
i2 = _i2;
}
}

希望对你有帮助。

关于Java,在整数列表中找到交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306644/

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