题目大意:两组数进行匹配,组出一个最大数,43=7*4+6*2+(-3)*(-1) 1*(-2)=-2(不加)
使用数组:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int sum=0;
int n1=scanner.nextInt();
int[]num1=new int[n1];
for (int i=0;i<n1;i++){
num1[i]=scanner.nextInt();
}
int n2=scanner.nextInt();
int[]num2=new int[n2];
for (int i=0;i<n2;i++){
num2[i]=scanner.nextInt();
}
Arrays.sort(num1);
Arrays.sort(num2);
for (int i=0;i<n1&&i<n2&&num1[i]<0&&num2[i]<0;i++){
sum+=num1[i]*num2[i];
}
for (int i=n1-1,j=n2-1;i>=0&&j>=0&&num1[i]>0&&num2[j]>0;i--,j--){
sum+=num1[i]*num2[j];
}
System.out.print(sum);
}
}
使用Arraylist:
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<Integer>arrayList1=new ArrayList<>();
ArrayList<Integer>arrayList2=new ArrayList<>();
Scanner scanner=new Scanner(System.in);
int sum=0;
int n1=scanner.nextInt();
for (int i=0;i<n1;i++){
arrayList1.add(scanner.nextInt());
}
int n2=scanner.nextInt();
for (int i=0;i<n2;i++){
arrayList2.add(scanner.nextInt());
}
Collections.sort(arrayList1);
Collections.sort(arrayList2);
for (int i=0;i<n1&&i<n2&&arrayList1.get(i)<0&&arrayList2.get(i)<0;i++){
sum+=arrayList1.get(i)*arrayList2.get(i);
}
for (int i=n1-1,j=n2-1;i>=0&&j>=0&&arrayList1.get(i)>0&&arrayList2.get(j)>0;i--,j--){
sum+=arrayList1.get(i)*arrayList2.get(j);
}
System.out.print(sum);
}
}
都有一组超时