当前位置: 代码迷 >> 综合 >> leetcode-16-3Sum Closest
  详细解决方案

leetcode-16-3Sum Closest

热度:51   发布时间:2023-12-24 17:48:14.0

1.说明

    题目是,给定一个数组,和一个目标值,找出数组中的3个数,这3个数之和离目标值最近。

    可以直接想出的方法就是三重循环遍历。为了减少计算,需要先对数组进行排序,然后根据遍历中当前3个元素之和与目标值的关系判定是否需要继续向后遍历。

2.代码

/*** @param {number[]} nums* @param {number} target* @return {number}*/
var threeSumClosest = function(nums, target) {var list = nums.sort(function (a, b) {return a - b;});var distance = Math.abs((list[0] + list[1] + list[2]) - target);var tempSum;for (var i = 0; i < list.length; i++) {for (var j = i + 1; j < list.length; j++) {for (var k = j + 1; k < list.length; k++) {if (Math.abs(list[i] + list[j] + list[k] - target) > distance) {if ((list[i] + list[j] + list[k] - target) > 0) {break;}}else {distance = Math.abs(list[i] + list[j] + list[k] - target);tempSum = list[i] + list[j] + list[k];}}}}return tempSum;
};