LeetCode刷题记录——16最接近的三数之和
一 题目描述:
-
给定一个包括n个整数的数组和一个目标值target.找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和,假定每组输入之存在唯一答案。
-
示例:
-
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2)
-
二 思路:
-
双指针
-
和15题的思路一样,设置两个指针,指向当前位置后面的第一个和最后一个元素,不同的是需要比较一下每一次的和和target的之差的绝对值
-
代码:
-
class Solution { public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); int result = nums[0]+nums[1] + nums[2],check = abs(result - target); for(int i = 0;i<nums.size();i++){ int j = i+1; int k = nums.size()-1; while(j<k){ int Sum = nums[i] + nums[j] + nums[k]; int temp = abs(Sum - target); if(temp == 0) return Sum; if(temp<check){ check = temp; result = Sum; } if(Sum > target) k--; else j++; } } return result; } };
-
-