3Sum closet | LeetCode
来源:互联网 发布:centos怎么退出vi 编辑:程序博客网 时间:2024/05/22 12:44
题目不复制过来了,首先需要明确题目要求,就是找出三个数的和距离target最近,如果nums的大小只有3或者小于3个,那么就直接返回accumulate就可以了。如果大于3,这里就需要枚举,首先确定的就是第一个数的选取,注意,为了方便我们需要首先将nums进行排序,这样带来的好处就是每次枚举时可以利用有序的条件,大大减低复杂度。选取第一个数之后,然后枚举这个数后面的所有两个数组合,同时记录sum。这样能够得到所有的组合,最终得到题目的答案,代码如下
int threeSumClosest(vector<int>& nums, int target) {
int res=0;if(nums.size()<=3)
return accumulate(nums.begin(),nums.end(),0);
sort(nums.begin(),nums.end());
int size = nums.size();
res = nums[0]+nums[1]+nums[2];
for(int i=0;i<nums.size();++i){
//枚举第一个数
int j=i+1,k=size-1;
int sum=0;
while(j<k){
sum=nums[i]+nums[j]+nums[k];
if(abs(sum-target)<abs(res-target))
res = sum;
if(sum==target)
return sum;
if(sum>target)
--k;
else
++j;
}
}
return res;
}
0 0
- leetcode:3sum closet
- Leetcode 3Sum Closet
- 3Sum closet | LeetCode
- leetcode 16 3Sum Closet
- leetcode-16 3Sum Closet
- LeetCode 16 3Sum Closet
- [LeetCode] 2Sum, 3Sum, 4Sum, 3SUm closet
- 3Sum Closet
- 3 Sum Closet
- 3sum closet
- 3Sum Closet
- 3sum closet
- 3sum、3Sum closet、 4sum
- FTPrep: 16, 3Sum Closet
- 刷题的日常[Leetcode]——16)3 Sum Closet
- 15. 3Sum && 16 sum closet && 18 4sum
- Three Sum Closet
- 类型系列题目:1. Two Sum 15,3 sum ,16 3sum closet, 18 4sum, 454 4Sum II
- 双击启动tomcat中的startup.bat闪退原因及解决方法
- 为IntelliJ IDEA安装MySQL驱动
- 线程
- Vivado AXI Reference Guide 阅读笔记
- poj2104 K-th Number
- 3Sum closet | LeetCode
- 跟Andrey Vagin学习写内核patch
- 永远的无所畏惧
- 向量
- 数据类型是浮云
- java.lang.NoClassDefFoundError: org/apache/log4j/Level
- poj3481 Double Queue
- Linux内核源代码解析之——欲三次握手,先构造传输控制块!
- 为什么程序员喜欢深更半夜写代码