返回对 (a, b) 的总数,其中 a 来自 A,b 来自 B,a + b < = c
试图做一些练习,我遇到了这个问题...
给定两个 int 数组 A 和 B,以及一个 int c,返回对 (a, b) 的总数,其中 a 来自 A,b 来自 B,a + b <= c
立即想出了蛮力解决方案,但似乎无法连接这些点,以便在更好的时间复杂性中做到这一点。我首先尝试对数组进行排序,并试图找到某种类型的模式,但这并没有让我得到任何东西。我想到了一个数组有负数的情况。在这种情况下,我不能只查看A或B的值并检查它本身是否小于c,因为在另一个数组中可能存在负值,当加在一起时,结果为< = c。任何见解,想法或线索将不胜感激。
import java.util.*;
public class CountPairs {
public static void main(String args[]){
int arrayA[] = {32,45,9,4};
int arrayB[] = {43,457,54,90};
Scanner scan = new Scanner(System.in);
System.out.println("Choose the value that you want to find pairs <= ");
int c = scan.nextInt();
System.out.println("The total number of pairs are : " + pairs(arrayA, arrayB, c));
}
public static int pairs(int A[], int B[], int n) {
int count = 0;
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < B.length; j++) {
int total = A[i] + B[j];
if(total <= n)
count++;
}
}
return count;
}
}