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; }};