LeetCode 16. 3Sum Closest

Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

Example 1:

复制Input: nums = [-1,2,1,-4], target = 1
Output: 2
Explanation: The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

Constraints:

3 <= nums.length <= 10^3
-10^3 <= nums[i] <= 10^3
-10^4 <= target <= 10^4

实现思路:

找到三个数的和使其最接近目标数,和15题一样同属于双指针题,不详细赘述了。

class Solution {
public:
   int threeSumClosest(vector<int>& nums, int target) {
	int minGap=0x3fffffff,res;
	sort(nums.begin(),nums.end());
	for(int i=0; i<nums.size(); i++) {
		if(i>0&&nums[i]==nums[i-1]) continue;
		int j=i+1,k=nums.size()-1;
		while(j<k) {
			int ansVal=(nums[i]+nums[j]+nums[k]);
			if(abs(ansVal-target)<minGap) {
				minGap=abs(ansVal-target);
				res=ansVal;
			}
			if(ansVal<target) j++;//总和小于目标数的时候说明 可以让j++缩短差距 
			else k--;
		}
	}
	return res;
}
};
posted @   coderJ_ONE  阅读(28)  评论(0)    收藏  举报
编辑推荐:
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
阅读排行:
· .NET 阻止Windows关机以及阻止失败的一些原因
· 博客园2025新款「AI繁忙」系列T恤上架
· Avalonia跨平台实战(二),Avalonia相比WPF的便利合集(一)
· C# LINQ 快速入门实战指南,建议收藏学习!
· Redis实现高并发场景下的计数器设计
点击右上角即可分享
微信分享提示