最接近的三数之和

问题描述:

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/3sum-closest

思路:

暴力法

题解:

class Solution {
public:
    int threeSumClosest(vector<int> &nums, int target) {
        int n = nums.size();
        int a[n + 100];
        int count = 0;
        for (vector<int>::iterator m = nums.begin(); m != nums.end(); m++) {
            a[count] = *m;
            count++;
        }
        sort(a, a + n);
        int linshi;
        int min=0x3f3f3f3f;
        int flag;
        for (int i = 0; i < n - 2; i++) {
            for (int j = i + 1; j < n - 1; j++) {
                for (int m = j + 1; m < n; m++) {
                    linshi = (a[i] + a[j] + a[m]) - target;
                    if (linshi < 0) {
                        if (0 - linshi <= min) {
                            min = 0 - linshi;
                            flag = linshi+target;
                        }
                    } else {
                        if (linshi <= min) {
                            min = linshi;
                            flag = linshi+target;
                        }
                    }

                }
            }
        }

        return flag;
    }

};

标签: none

添加新评论