题目:从给定的数字中找出3个之和 最接近给的的target的那三个数之和
这道题我一开始想错了,最后看了讨论区写的
Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
Example:
Given array nums = [-1, 2, 1, -4], and target = 1. The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
解答:
#C++版本
#include<algorithm>
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int result;
result = nums[0]+nums[1]+nums[2];
for(int i=0;i<nums.size()-2;i++){
int j=i+1;
int k=nums.size()-1;
while(j<k){
int sum_=nums[i]+nums[j]+nums[k];
if(sum_==target){
return sum_;
}
if(abs(sum_-target)<abs(result-target)){
result=sum_;
}
if(sum_<target){
j++;
}
if(sum_>target){
k--;
}
}
}
return result;
}
};
#python版本
import numpy as np
class Solution:
def threeSumClosest(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
nums.sort()
result=nums[0]+nums[1]+nums[2]
for i in range(len(nums)-2):
j,k=i+1,len(nums)-1
while j<k:
sum_=nums[i]+nums[j]+nums[k]
if sum_==target:
return sum_
if abs(sum_-target) < abs(result-target):
result=sum_
if sum_<target:
j+=1
if sum_>target:
k-=1
return result

本文介绍了一种算法,用于从给定的整数数组中找到三个数,使它们的和最接近指定的目标值。提供了C++和Python两种语言的实现代码,通过排序和双指针技巧,有效地解决了问题。
3万+

被折叠的 条评论
为什么被折叠?



