Sum ClosestGiven 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. The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
时间复杂度 O(n^k)
#include
#include
#include
#include
#include
using namespace std; class Solution { public: int threeSumClosest(vector
& nums, int target){ sort(nums.begin(),nums.end()); return kSumClosestWithSort(nums,0,3,target); }; int kSumClosestWithSort(vector
& nums,int start,int k, int target) { int len=nums.size(); int tmp=0; if(k==1) { if(nums[start]>=target) return nums[start]; while(start
=target) { return abs(nums[start]-target)
nums; nums.push_back(-1); nums.push_back(2); nums.push_back(1); nums.push_back(-4); cout<
<
时间复杂度O(n^k-1)
#include
#include
#include
#include
#include
using namespace std; class Solution { public: int threeSumClosest(vector
& nums, int target){ sort(nums.begin(),nums.end()); return kSumClosestWithSort(nums,0,3,target); }; int kSumClosestWithSort(vector
& nums,int start,int k, int target) { int len=nums.size(); int tmp=0; if(k==2) { int i=start; int j=len-1; int ret=nums[i]+nums[j]; int sum=0; while(i
nums; nums.push_back(-1); nums.push_back(2); nums.push_back(1); nums.push_back(-4); cout<
<