LC16 3Sum Closest
2020-07-27 本文已影响0人
Rookie118
本题链接:3Sum Closest
本题标签:Array,Two Pointers
本题难度:
英文题目
中文题目
方案1:
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
if(nums.size() < 3)
return 0;
int res = 0, min_distance = INT_MAX;
sort(nums.begin(), nums.end());
for(int i = 0; i < nums.size(); ++i)
{
int left = i + 1, right = nums.size() - 1;
bool flag_equal = false;
while(left < right)
{
if(abs(nums[left] + nums[right] + nums[i] - target) < min_distance)
{
min_distance = abs(nums[left] + nums[right] + nums[i] - target);
res = nums[left] + nums[right] + nums[i];
}
if(nums[left] + nums[right] + nums[i] < target)
++left;
else if(nums[left] + nums[right] + nums[i] > target)
--right;
else
{
flag_equal = true;
res = target;
break;
}
}
if(flag_equal)
break;
while(i + 1 < nums.size() && nums[i] == nums[i + 1])
++i;
}
return res;
}
};
时间复杂度:
空间复杂度: