如何解决计算两个数组列表A和B,并计算A中小于B的每个数字的值
给出两个数组列表A和B,A = {3,4,5]和B = [4,7],计算A中小于或等于B中每个元素的数字。在这种情况下,B.get (0)= 4是A中小于或等于2的值,即3和4,类似地7具有3个值。因此,该函数应返回list = [2,3]。 我已经使用两个for循环解决了这个问题,该循环适用于较小的输入,但是随着大小的增加,性能会下降。
import java.util.*;
public class checkDiff{
public static void check(List<Integer> A,List<Integer> B) {
List<Integer> result=new ArrayList<Integer>();
for(int i=0;i<B.size();i++){
int count=0;
for(int j=0;j<A.size();j++){
if(A.get(j)<=B.get(i)){
count++;
}
}
result.add(i,count);
}
for(int x:result){
System.out.println(x);
}
}
public static void main(String []args){
List<Integer> A=new ArrayList<Integer>();
List<Integer> B=new ArrayList<Integer>();
A.add(3);
A.add(4);
A.add(7);
B.add(4);
B.add(7);
check(A,B);
}
}
有什么方法可以优化此代码。请帮忙。
解决方法
问题是您要使用的数组不是按值排序的。因此,您将必须检查所有可能的组合,并且除非您使用排序列表或使用二进制搜索树之类的数据结构,否则您将无法加快此过程的速度。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。