gpt4 book ai didi

java - 返回匹配数组值的索引总和

转载 作者:行者123 更新时间:2023-12-01 14:32:38 25 4
gpt4 key购买 nike

我正在尝试用 Java 编写一个函数,它接受两个数组并对数组 1 中的索引值求和,其中值与数组 2 匹配,例如

  • 数组 1 = {15, 6, 99, 12, 35}
  • Array2 = {1, 12, 7, 99, 35}
  • 匹配“Array1[index]”值 = 2 (99)、3 (12)、4 (35)
  • 因此,返回 9 (2+3+4)

我建议使用以下方法:

public int sumIndex(int[] array1, int[] array2) {
int total = 0;
for (int i=0; i < array1.length; i++) {
for (int j = 0; j < array2.length; j++) {
if (array1[i] == array2[j]) {
total = total + i;
}
}
}
}

但如果 Array2 中有不匹配的值,我也想返回 -1。因此,在上述情况下,1 和 7 不在 Array1 中,因此总数会减少 -2(每个缺失值 -1)。

如果我添加一个'else'语句

else {
total = total - 1;
}

或'else if'语句

else if (array1[i] != array2[j]) {
total = total - 1;
}

每次在 i 和 j 循环中存在 array1[index] 与 array2[index] 不匹配的值时,我都会从总数中删除 -1。我试图只为 array2 中与 array1 中的值不匹配的值返回 -1。

我该如何编写,以便仅当 array2 的值​​不是 array1 的元素时才返回 total-1?

谢谢

最佳答案

查看您的示例,我假设数组具有唯一元素。在这种情况下,您需要执行以下操作:

  1. 找到匹配项后立即中断内部循环。这将使您的代码高效。
  2. 改变循环的顺序并重复相同的逻辑。
  3. 在内循环终止时,检查内循环是否提前终止(因为break)。如果不是,则未找到匹配项,因此总计的值需要减少 1
public class Main {
public static void main(String[] args) {
System.out.println(sumIndex(new int[] { 15, 6, 99, 12, 35 }, new int[] { 1, 12, 7, 99, 35, 100, 1000 }));
}

static int sumIndex(int[] array1, int[] array2) {
int total = 0, i, j;
// Nested loops to calculate sum of indices having equal values
for (i = 0; i < array1.length; i++) {
for (j = 0; j < array2.length; j++) {
if (array1[i] == array2[j]) {
total += i;
break;
}
}
}

// Nested loops to decrease 'total' for the non-matching values of array2
for (j = 0; j < array2.length; j++) {
for (i = 0; i < array1.length; i++) {
if (array1[i] == array2[j]) {
break;
}
}

// If a match is not found, 'i' will reach a value equal to array1.length
if (i == array1.length) {
total--;
}
}
return total;
}
}

输出:

5

关于java - 返回匹配数组值的索引总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61198154/

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