3Sum Closest
来源:互联网 发布:阿里云的cdn怎么样 编辑:程序博客网 时间:2024/04/30 12:54
-----QUESTION-----
Given an array
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).
-----SOLUTION-----
class Solution {public: int threeSumClosest(vector<int> &num, int target) { sort(num.begin(), num.end()); int j; int k; int sum; int diff; int min_diff = INT_MAX; int local_target; for(int i = 0; i < num.size()-2; i++) { local_target = target-num[i]; j = i+1; k = num.size()-1; while(j<k){ sum = num[j]+num[k]; if(sum == local_target) { return target; } else if(sum < local_target) { diff = local_target - sum; if(diff < abs(min_diff)) min_diff = diff; j++; } else { diff = sum - local_target; if(diff < abs(min_diff)) min_diff = -diff; k--; } } } return target-min_diff; }};
也可以使用以下递归的方法
class Solution {public: int threeSumClosest(vector<int> &num, int target) { sort(num.begin(), num.end()); inferior = INT_MAX; dfs(num, 0, 0, target); return target-inferior; } void dfs(vector<int> &num, int startIndex, int depth, int target) { if(depth == 2) { int i = startIndex; for(; i < num.size() && num[i] < target; i++) {} if(num[i]-target < abs(inferior)) inferior = target-num[i]; if(i>startIndex && target - num[i-1] < abs(inferior)) inferior = target - num[i-1]; return; } for(int i = startIndex;i<num.size()-depth; i++) { dfs(num, i+1, depth+1, target-num[i]); } }private: int inferior;};
0 0
- 3 Sum & 3 Sum Closest
- 【Leetcode】3Sum Closest (Sum)
- LeetCode: 3 Sum Closest
- 3Sum Closest
- leetcode - 3 sum closest
- leetcode 3Sum Closest
- LeetCode: 3Sum Closest
- [Leetcode]3Sum Closest
- Leetcode: 3SUM Closest
- LeetCode 3Sum Closest
- [Leetcode] 3Sum Closest
- leetcode002:3sum closest
- LeetCode : 3Sum Closest
- LeetCode 3Sum Closest
- 3Sum Closest
- 3Sum Closest
- 3Sum Closest
- [LeetCode] 3Sum Closest
- HDU 2276 Kiki & Little Kiki 2(矩阵快速幂)
- 基于DCMTK的DICOM医学图像显示及其调窗方法研究
- 网站分析90%的投入应该给分析数据的人
- 1.I2C协议
- Codeforces 466D Increase Sequence(dp+组合数学)
- 3Sum Closest
- 清除浮动的原理和方法
- JavaScript小特性(6)——函数式编程
- 文字的颗粒效果
- Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
- 从简单实例开始,学会写Makefile(二)
- java的selector用法
- 求二叉树的任意两个节点的最近公共祖先
- 【LeetCode】-Remove Duplicates from Sorted List