3Sum Closest
来源:互联网 发布:最新网络剧2017 编辑:程序博客网 时间:2024/05/16 14:47
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
For example, given array S = {-1 2 1 -4}, and target = 1.
For example, given array S = {-1 2 1 -4}, and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
题目:找到三个数,这三个数的和与target最近接,返回这三个数的和;
思路:
先排序,然后左右各一指针,在sum小于目标值的时候左指针向右走,在sum大于目标值的时候右指针向左走。
代码:
#include<iostream>#include<vector>#include<algorithm>using namespace std;int main(){//找到与target最接近的三个数之和 并且三者的地址vector<int>a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };int target = 6;int dist = INT_MAX;sort(a.begin(), a.end());int minsum;vector<vector<int>::const_iterator> index;for (vector<int>::const_iterator it = a.begin(); it != a.end(); it++){vector<int>::const_iterator first = it + 1;vector<int>::const_iterator last = a.end() - 1;while (first < last){int sum = *it + *first + *last;//三个数的和对target进行判断/*index.push_back(it);index.push_back(first);index.push_back(last);*/if (sum>target){if (abs(sum - target) < dist){dist = abs(sum - target);minsum = dist;}last--;}if (sum < target){if (abs(sum - target) < dist){dist = abs(sum - target);minsum = dist;}first++;}else{dist = 0;minsum = target;break;}}}cout << minsum <<" "<<dist<< endl;system("pause");return 0;}
class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int sum=INT_MAX; int minsum=0; int nsum; sort(nums.begin(),nums.end()); int i,j,k; for(i=0;i<nums.size();i++) { j=i+1; k=nums.size()-1; while(j<k) { nsum=nums[i]+nums[j]+nums[k]; if(abs(nsum-target)<sum) { sum=abs(nsum-target); minsum=nsum; } if(nsum-target<0) { j++; } else if(nsum-target>0) { k--; } else if((nsum-target)==0) { return target; } } } return minsum; }};
0 0
- 3 Sum & 3 Sum Closest
- 【Leetcode】3Sum Closest (Sum)
- LeetCode: 3 Sum Closest
- 3Sum Closest
- leetcode - 3 sum closest
- leetcode 3Sum Closest
- LeetCode: 3Sum Closest
- [Leetcode]3Sum Closest
- Leetcode: 3SUM Closest
- LeetCode 3Sum Closest
- [Leetcode] 3Sum Closest
- leetcode002:3sum closest
- LeetCode : 3Sum Closest
- LeetCode 3Sum Closest
- 3Sum Closest
- 3Sum Closest
- 3Sum Closest
- [LeetCode] 3Sum Closest
- Linux下jdk安装
- 对象的多态性
- 面试小结二附: TCP/IP协议 三次握手与四次挥手
- Java基础之Arrays工作
- MYSQL表名批量改为大写
- 3Sum Closest
- Howto Enable and Use A2DP Sink on Ubuntu Linux with Bluez
- nyoj 20
- Java入门常识
- iOS9不能正常使用HTTP的解决方法
- 数据库_MYSQL获取自增主键【4种方法】 ,推荐方法3
- LeetCode 109 Convert Sorted List to Binary Search Tree
- 在linux下用tomcat部署java web项目的过程与注意事项__转载借用
- UNIX网络编程——读写锁