3Sum Closet
来源:互联网 发布:知枢密院事 编辑:程序博客网 时间:2024/06/05 06:49
3Sum ClosestJan 18 '12
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
For example, given array S = {-1 2 1 -4}, and target = 1. The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
算法:可以采用和3Sum问题相似的算法,对数组排序后枚举v[i],取1-v[i]作为target,进行类似2Sum的计算,返回与target差值最小的差值。算法复杂度也是O(N^2)的。
程序:
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 target2sum;int minum_difference;int flag=0;vector<int>::iterator it = num.begin();for(;it!=num.end()-1;){target2sum = target-*it;;if(it==num.begin()) flag = 1;//erase the elementit = num.erase(it);//2Sum2if(flag){minum_difference = twoSumCloset(num,target2sum);flag = 0;}else{int ret2 = twoSumCloset(num,target2sum);minum_difference = abs(minum_difference)<abs(ret2)?minum_difference:ret2;}num.insert(it,target-target2sum);it++;}return minum_difference+target; } int twoSumCloset(vector<int> &num,int target){ int i = 0; int j = num.size()-1;int difference = num[i]+num[j]-target; int ret = difference; while(i<j){ difference = num[i]+num[j]-target;if(abs(difference)<abs(ret)) ret = difference; if(difference > 0){ j--; }else if(difference<0){ i++; }else{ break; } } return ret; }
时间:112 milli secs
- 3Sum Closet
- leetcode:3sum closet
- Leetcode 3Sum Closet
- 3 Sum Closet
- 3sum closet
- 3Sum Closet
- 3Sum closet | LeetCode
- 3sum closet
- 3sum、3Sum closet、 4sum
- leetcode 16 3Sum Closet
- leetcode-16 3Sum Closet
- LeetCode 16 3Sum Closet
- FTPrep: 16, 3Sum Closet
- [LeetCode] 2Sum, 3Sum, 4Sum, 3SUm 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
- 刷题的日常[Leetcode]——16)3 Sum Closet
- iphone ios 屏幕,statusbar,状态栏,标签栏尺寸,高度
- struts2(3)
- C# 网络编程系列六:UDP编程
- 3Sum问题
- 2Sum Problem
- 3Sum Closet
- 4Sum Problem
- JS检查表单
- BOEX3.1备份
- ios cocos2d实现progress(进度条)效果控件源码
- POJ分类
- JAVA中的泛型
- getResource的说明
- BigDecimal.setScale 处理java小数点