YuriiS Asked:2022-08-28 19:03:34 +0000 UTC2022-08-28 19:03:34 +0000 UTC 2022-08-28 19:03:34 +0000 UTC 找到最接近给定数字的三个数组元素的总和 772 给你一个由n 个数字组成的数组(数字可以是正数也可以是负数)和一个数字t。有必要找到最接近t的数组的三个元素的总和。例如 n = [-1, 2, 1, -4]; t = 1; 总和= -1 + 2 + 1 = 2; 我不知道如何遍历数组以获取所有可能选项的三个元素的总和。帮助我理解 java 2 个回答 Voted Sergey Zh. 2022-08-28T19:20:40Z2022-08-28T19:20:40Z 三个嵌套循环 i = 0..n-1, j = 0..n-1, k = 0..n-1 如果索引不相等(i!=j, j!=k, i!=k),我们计算索引为 i, j, k 的数组元素的总和 如果 sum 小于存储量,我们会记住 sum。 Best Answer Pentiux 2022-08-28T20:01:26Z2022-08-28T20:01:26Z int[] array = <массив из n чисел>; int t = <нужное значение>; int closerSum = 0; int tempDifference = Integer.MAX_VALUE; for (int indexOfNumberOne = 0; indexOfNumberOne < array.length; indexOfNumberOne++) { for (int indexOfNumberTwo = indexOfNumberOne + 1; indexOfNumberTwo < array.length; indexOfNumberTwo++) { for (int indexOfNumberThree = indexOfNumberTwo + 1; indexOfNumberThree < array.length; indexOfNumberThree++) { int sum = array[indexOfNumberOne] + array[indexOfNumberTwo] + array[indexOfNumberThree]; if (sum == t) { return sum; // здесь заканчиваем, т.к. ближе равенства ничего быть не может. } if (Math.abs(t - sum) < tempDifference) { tempDifference = Math.abs(t - sum); closerSum = sum; } } } } 像这样的东西。正如 Sergey 上面所写,不仅是最小值,而且是最接近的。我们需要比较数组中三个数字的所有可能的唯一和。可能有错误,我立即在浏览器中写道。
三个嵌套循环 i = 0..n-1, j = 0..n-1, k = 0..n-1
如果索引不相等(i!=j, j!=k, i!=k),我们计算索引为 i, j, k 的数组元素的总和
如果 sum 小于存储量,我们会记住 sum。
像这样的东西。正如 Sergey 上面所写,不仅是最小值,而且是最接近的。我们需要比较数组中三个数字的所有可能的唯一和。可能有错误,我立即在浏览器中写道。