Leecode16

    技术2025-10-06  3

    Leecode 16

    思路:固定一个,再运用双指针。

    先固定第一个,然后运用双指针,一个变量记录最小差值,一个记录三个最近值得和,如果差值为0直接返回,否者返回最近得值。

    代码:

    int Leecode16_threeSumClosest(std::vector<int>& nums, int target) { int result = INT_MAX; int last_closet = INT_MAX; int len = nums.size(); if (len < 3) return result; std::sort(nums.begin(), nums.end()); for (int i = 0; i < len; i++) { int L = i + 1; int R = len - 1; while (L < R) { int sum = nums[i] + nums[L] + nums[R] - target; if (sum == 0) return target; if (std::abs(sum) < std::abs(last_closet)) { result = nums[i] + nums[L] + nums[R]; last_closet = sum; } if (sum < 0) L++; else if (sum > 0) R--; } } return result; }
    Processed: 0.009, SQL: 9