LeetCode 16 3sum closest

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.

    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
此题与上体3sum类似,只不过这里需要用sum来和target比较决定指针+1,还是-1,同样这里需要先对元素排序,代码如下:
void insertsort2(vector<int> &num)
{
    int nSize = num.size();
    int j = 0;

    for(int i = 1; i< nSize; ++i)
    {
        int temp = num[i];
        for( j = i; j>0 && temp < num[j-1] ; --j)
        {
            num[j] = num[j-1];
        }
        num[j] = temp;
    }
}
int threeSumClosest(vector<int>& nums, int target)
{
    int nSize = nums.size();
    int sum = 0;
    int dist = INT_MAX;
    int nPrevDist = INT_MAX;
    insertsort2(nums);

    if(nSize < 3)
    {
        return -1;
    }
    for(int i = 0; i!=nSize; ++i)
    {
        int p = i+1;
        int q = nSize - 1;
        while(p < q)
        {
            sum = nums[i] + nums[p] + nums[q];
            int temp = abs(sum - target);
            if(temp < nPrevDist)
            {
                nPrevDist = temp;
                dist = sum;
            }
            if(sum > target)
            {
                --q;
            }
            else
            {
                ++p;
            }
        }
    }
    return dist;

}

需要多思考如何借鉴运用已有的算法。

时间: 2024-10-10 01:58:44

LeetCode 16 3sum closest的相关文章

Leetcode 16. 3Sum Closest(指针搜索)

16. 3Sum Closest Medium 131696FavoriteShare 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 e

leetCode 16.3Sum Closest (离给定值最近的三数之和) 解题思路和方法

3Sum Closest 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 arr

Java [leetcode 16] 3Sum Closest

题目描述: 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 =

Array + two points leetcode.16 - 3Sum Closest

题面 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. 给定数组,找出并返回最接近target的

LeetCode #16 3Sum Closest (M)

[Problem] 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

[LeetCode] 16. 3Sum Closest 最近三数之和

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

[leetcode]16. 3Sum Closest最接近的三数之和

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 nu

LeetCode 16 3Sum Closest(C,C++,Java,Python)

Problem: 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

LeetCode 16 3Sum Closest(最接近的3个数的和)

翻译 给定一个有n个整数的数组S,找出S中3个数,使其和等于一个给定的数,target. 返回这3个数的和,你可以假定每个输入都有且只有一个结果. 例如,给定S = {-1 2 1 -4},和target = 1. 那么最接近target的和是2.(-1 + 2 + 1 = 2). 原文 Given an array S of n integers, find three integers in S such that the sum is closest to a given number,