LeetCode 3Sum Closest

来源:互联网 发布:徐达之死 知乎 编辑:程序博客网 时间:2024/04/28 10:37
class Solution {public:    int threeSumClosest(vector<int> &num, int target) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        sort(num.begin(), num.end());        int len = num.size();        int begin, end, sum, diff;                int closest = num[0] + num[1] + num[len - 1];        if (closest != target) {            diff = abs(closest - target);        }        else {            return closest;        }                for (int i = 0; i < len - 2; i++) {            if (i != 0 && num[i] == num[i - 1]) {                continue;            }                        begin = i + 1;            end = len - 1;                        while (begin < end) {                sum = num[i] + num[begin] + num[end];                                if (sum == target) {                    return sum;                }                if (abs(target - sum) < diff) {                    closest = sum;                    diff = abs(target - sum);                }                                if (sum < target) {                    begin++;                    while (begin < len -1 && num[begin] == num[begin - 1]) {                        begin++;                    }                }                else {                    end--;                    while (end > i + 1 && num[end] == num[end + 1]) {                        end--;                    }                }            }         }                return closest;    }};

原创粉丝点击