3Sum Closest
2015-09-05 11:49
369 查看
3Sum Closest
Total Accepted: 49672 TotalSubmissions: 184745My Submissions
Question
Solution
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).
先排序,遍历第一个指针,后两个指针从剩余的数两头往中间走
class Solution { public: int threeSumClosest(vector<int>& nums, int target) { int size = nums.size(); if(size == 0) return 0; else if(size == 1) return nums[0]; else if( size == 2) return nums[0] + nums[1]; //排序 int *number = new int[size]; for( int i = 0; i < size; i++) number[i] = nums[i]; QuickSort(number, size); //求和 int mid,right = size - 1,dif = INT_MAX,sum,result = 0; for( int i = 0;i < size - 2; i++) { if( i != 0 && number[i] == number[i-1]) continue; mid = i + 1; right = size - 1; while(mid < right) { if( number[mid] == number[mid -1] && mid > i+1) { mid ++; continue; } sum = number[i] + number[mid] + number[right]; if( target == sum ) return target; else if(target < sum) { if( dif > sum - target) { dif = sum - target; result = sum; } right --; } else { if( dif > target - sum) { dif = target - sum; result = sum; } mid ++; } } } delete []number; return result; } //从小到大排序 void QuickSort(int *num, int size) { if( size <= 1) return; int mid = num[size - 1],tmp, i = 0,j = 0; for(; i < size - 1; i ++) { if( num[i] < mid) { tmp = num[i]; num[i] = num[j]; num[j] = tmp; j++; } } num[size - 1] = num[j]; num[j] = mid; if(j > 1) QuickSort(num, j ); if(j < size - 2) QuickSort(num + j + 1, size - j - 1); } };
[/code]
相关文章推荐
- 字符串处理相关
- PhotoView源码分析(3)
- ExtJS Grid 每个Cell都显示tooltip
- gdb调试程序
- 进程查看管理
- Servlet与tomcat配置
- IOS_UI_Label
- 当Python和R遇上北京二手房(下)
- Java collections小知识收集
- 计算机中的有符号数和无符号数
- mysql 插入中文时出现ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern ame' at row 1
- 设置页边距生效
- JavaScript 函数创建思想
- Android UI设计:ViewFlipper使图片循环滑动
- 数据结构基础题(第一篇)
- PHP 杂项函数
- phpstorm 8.x注册码
- Navicat访问MySQL出现1044/1045错误的解决方法
- 指针与数组
- 2.1.3 Debugging of Shaders (about vertex input parameters) 着色器的调试(关于顶点输入参数)