做龙之向导网站有用吗,常州谷歌推广,wordpress 单页面 外贸,wordpress中setting给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数#xff0c;使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如#xff0c;给定数组 nums [-1#xff0c;2#xff0c;1#xff0c;-4], 和 target 1…给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如给定数组 nums [-121-4], 和 target 1.与 target 最接近的三个数的和为 2. (-1 2 1 2).
public class ThreeSumClosest {public static void main(String[] args) {int[] nums { -1, 2, 1, -4 };System.out.println(threeSumClosest(nums, 1)); // 2}public static int threeSumClosest(int[] nums, int target) {int closestSum 0, diff Integer.MAX_VALUE; // 初始化最接近的三个数的和 及 与目标值的差值(绝对值)Arrays.sort(nums); // 对数组排序for (int k 0; k nums.length - 2; k) { // 第一个数的索引int i k 1, j nums.length - 1; // 第二个和第三个数的索引while (i j) {int sumTemp nums[k] nums[i] nums[j]; // 当前的三数之和int diffTemp Math.abs(target - sumTemp); // 当前三数之和与目标值差值的绝对值if (diffTemp diff) { // 如果差值绝对值小于之前的则更新最接近的三个数的和 及 与目标值的差值(绝对值)closestSum sumTemp;diff diffTemp;}if (sumTemp target) { // 如果三数之和大于目标值则减小最大的第三个数j--;} else if (sumTemp target) { // 如果三数之和小于目标值则增大的第二个数i;} else {return target; // 如果和目标值相等那当然就是最接近的三数之和了}}}return closestSum;}}