您的位置:首页 > 职场人生

leetcode之三数之和 II

2016-04-20 23:34 477 查看
题目:

给一个包含n个整数的数组S,
找到和与给定整数target最接近的三元组,返回这三个数的和

解答:

two pinters实现,很简单

class Solution {
public:
/**
* @param numbers: Give an array numbers of n integer
* @param target: An integer
* @return: return the sum of the three integers, the sum closest target.
*/
int threeSumClosest(vector<int> nums, int target) {
// write your code here
int size = nums.size();
sort(nums.begin(), nums.end());
int res = nums[0] + nums[1] + nums[2];
for (int i = 0; i < size - 2; ++i) {
int start = i + 1;
int end = size - 1;
while (start < end) {
if (nums[i] + nums[start] + nums[end] < target) {
if (abs(nums[i] + nums[start] + nums[end] - target) < abs(res - target)) {
res = nums[i] + nums[start] + nums[end];
}
start++;
} else {
if (abs(nums[i] + nums[start] + nums[end] - target) < abs(res - target)) {
res = nums[i] + nums[start] + nums[end];
}
end--;
}
}
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息