16. 3Sum Closest
2016-01-06 16:34
204 查看
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).
public class Solution { public int threeSumClosest(int[] nums, int target) { int l = nums.length; if (l < 3) return Integer.MAX_VALUE; Arrays.sort(nums); int result = nums[0] + nums[1] + nums[l-1]; for (int i = 0; i < l-2; i++) { if (i > 0 && nums[i] == nums[i-1]) continue; if(nums[i] > target && target >= 0){ if (Math.abs(nums[i]+nums[i+1]+nums[i+2]-target) < Math.abs(result-target)) { result=nums[i]+nums[i+1]+nums[i+2]; } return result; } for (int j = i+1,k = l-1; j < k; ) { if (nums[i]+nums[j]+nums[k] == target) { return target; } if (Math.abs(nums[i]+nums[j]+nums[k]-target) < Math.abs(result-target)) { result=nums[i]+nums[j]+nums[k]; } if(nums[i]+nums[j]+nums[k] > target){ while(j < k && nums[k-1] == nums[k]){ k--; } k--; } else { while(j < k && nums[j+1] == nums[j]){ j++; } j++; } } } return result; } }
相关文章推荐
- Android初学习 - AsyncTask的一些介绍II
- PostgreSQL学习手册(性能提升技巧)
- 做过的DFS集合
- Java学习之Iterator(迭代器)的一般用法
- 2015年总结2016年计划
- Android手势锁屏界面
- PHP的魔法方法
- maven学习(上)- 基本入门用法
- 使Nginx服务器支持中文URL的相关配置详解
- Github、Jekyll 搭建及优化静态博客方法指南
- java 选择排序
- Solr DIH使用说明
- Python 下基本的 socket 编程
- iOS NSFetchedResultsController的使用(使用数据库时提高效率)
- 嵌入式文件系统创建工具之---fakeroot
- android消息处理机制学习(一)-Handler,Message,MessageQueue,Looper简介
- Jdk1.7+eclipse搭建Java开发环境
- [转] easyui 获取数据表格中选中行的数据 Get selected row data from...
- Maven基础--POM
- selenium实现嵌套页面对象实例--查询功能(POM)