leetcodeOJ 16. 3Sum Closest
来源:互联网 发布:电脑喊麦用什么软件 编辑:程序博客网 时间:2024/06/06 00:07
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).
与leetcodeOJ 15题相似,需要多维护一个最小值diff,
代码如下:
class Solution {public: int threeSumClosest(vector<int>& nums, int target) { if(nums.size() < 3) return INT_MAX; int ans = 0; sort(nums.begin(), nums.end()); int diff = abs(nums[0] + nums[1] + nums[2] - target); for(int i = 0; i < nums.size(); i++){ if(i > 0 && nums[i] == nums[i-1]) continue; int left = i+1; int right = nums.size()-1; while(left < right){ int temp = nums[i] + nums[left] + nums[right]; if(abs(target - temp) <= diff){ diff = abs(target - temp); ans = temp; // cout << ans << " " << diff << endl; } if(temp > target){ right--; while(left < right && nums[right] == nums[right+1]){ right--; } } else if(temp < target){ left++; while(left < right && nums[left] == nums[left-1]){ left++; } } else if(temp == target){ return target; } } } return ans; }};
0 0
- leetcodeOJ 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- 16. 3Sum Closest
- Density of Power Network (题意杀,水题)
- (七)枚举 & 注解
- Phaser中文说明文档
- 算法基础篇(10)------匈牙利算法
- Dealing with the nonlinearly separable case using slack variables
- leetcodeOJ 16. 3Sum Closest
- python类型比较的3种方式
- JDBC 基础代码
- 计算机科学和编程导论-week3-递归
- 对JESSIONID理解
- python新手自学-list
- np.max 与 np.maximum
- H5游戏开发之phaser学习笔记(一)
- cin输入函数