leetcode 16 最接近的三数之和
2019-03-02 20:36
375 查看
给定一个包括 n 个整数的数组
nums和 一个目标值
target。找出
nums中的三个整数,使得它们的和与
target最接近。返回这三个数的和。假定每组输入只存在唯一答案。
[code]例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
暴力法,三重循环找到最接近的三个数。
[code]class Solution { public: int threeSumClosest(vector<int>& nums, int target) { int n=nums.size(); int res=nums[0]+nums[1]+nums[2]; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) for(int k=j+1;k<n;k++){ int sum=nums[i]+nums[j]+nums[k]; if(abs(sum-target)<abs(res-target))res=sum; } return res; } };
先将数组排序,固定一个数,然后用l,r两个指针处理另外两个值。
[code]class Solution { public: int threeSumClosest(vector<int>& nums, int target) { int n=nums.size(); sort(nums.begin(),nums.end());//必须先排序 int res=nums[0]+nums[1]+nums[2]; for(int i=0;i<n;i++){ int l=i+1,r=n-1; while(l<r){ int sum=nums[i]+nums[l]+nums[r]; if(abs(sum-target)<abs(res-target))res=sum;//如果当前的三个数更接近 if(sum<target)l++; else if(sum>target)r--; else return res;//sum==target肯定是最近的,直接返回 } } return res; } };
相关文章推荐
- 【Leetcode】16. 最接近的三数之和
- leetcode16---最接近的三数之和
- LeetCode16.最接近的三数之和
- leetcode 16 最接近的三数之和
- [LeetCode] 16. 3Sum Closest 最接近的三数之和 @python
- LeetCode- 16. 最接近的三数之和 (Medium)python和c++实现
- 【PHP解法==LeetCode查找类型问题2(N数之和)】15.三数之和 && 16.最接近的三数之和 && 18.四数之和 && 454.四数相加II
- LeetCode题解(python)-16. 最接近的三数之和
- LeetCode 16. 最接近的三数之和
- Leetcode刷题38-16.最接近的三数之和(C++)
- leetcode 16. 最接近的三数之和(Java版)
- LeetCode刷题-最接近的三数之和
- LeetCode 16 3Sum Closest 找出最接近指定target的三个数的和
- LeetCode 16. 3Sum Closest. (最接近的三数之和)
- LeetCode 16 3Sum Closest (最接近target的3个数之和)
- #16. 最接近的三数之和-------中等
- LeetCode16. python实现:最接近的三数之和问题☆☆
- [LeetCode]16 最接近的三者之和
- 最接近的三数之和 - LeetCode
- LeetCode——16. 最接近的三数之和