[LeetCode][Java] 3Sum Closest
来源:互联网 发布:新手效果图制作软件 编辑:程序博客网 时间:2024/05/24 15:39
题目:
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).
题意:
给定一个包含n个整数的数组S,在数组中找出三个整数,使得这三个整数的和与目标值最为接近。返回这三个整数的和。你可以假定对于每个整数,都有确定的一个解。
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).
算法分析:
参考博客:http://www.zhuangjingyang.com/leetcode-3sum/
和3Sum异曲同工。 不过这里我们要判断的条件不在是三个数字和为0而是和为一个更加接近target的数字。
我们依然采用3Sum的算法,若有三个数字x1 + x2 + x3 = result 我们所求的便是让result最接近target。因此对于num,首先排序,然后遍历每个数字其下标大于自身的两个数字。然后设置两个全局变量 一个 minVal 用于记录其与target的距离,当距离减小时便更新result的新值。
AC代码:
<span style="font-size:12px;">public class Solution {private int minVal = Integer.MAX_VALUE;private int result = 0; public int threeSumClosest(int[] num, int target) { Arrays.sort(num); //if number is less than 3 or num is null it's can't be calc if(num.length <3 || num ==null) return target; for(int i=0;i<num.length;i++) { if(i>0 && num[i] == num[i-1]) continue; find(i,num,num[i],target); } return result; } public void find(int index,int[] num,int target,int res) { int l = index+1; //low is equal to index+1 just because we just search element that is bigger than itself int r = num.length - 1; while(l<r) { if( Math.abs(num[l] + num[r] + target - res) <= minVal) { minVal = Math.abs(num[l] + num[r] + target - res);//it's more closer result = num[l] + num[r] + target; } if(num[l] + num[r] + target >res) r--; else l++; } }}</span>
0 0
- [LeetCode][Java] 3Sum Closest
- LeetCode : 3Sum Closest [java]
- leetcode 3Sum Closest(Java)
- 3Sum Closest leetcode java
- LeetCode – 3Sum Closest (Java)
- 【leetcode-16】3Sum Closest(java)
- (Java)LeetCode-16. 3Sum Closest
- leetcode-java-16. 3Sum Closest
- 3Sum Closest Leetcode Python Java
- Leetcode 16. 3Sum Closest (Medium) (java)
- [LeetCode-Java]16. 3Sum Closest
- [LeetCode] 16. 3Sum Closest java
- LeetCode: 3 Sum Closest
- leetcode - 3 sum closest
- leetcode 3Sum Closest
- LeetCode: 3Sum Closest
- [Leetcode]3Sum Closest
- Leetcode: 3SUM Closest
- GCC在C语言中内嵌汇编 asm __volatile__
- SVN各种问题详解
- ubuntu下登陆学校的校园网
- GRE写作必备句型
- Andrew Ng机器学习公开课笔记 — 线性回归和梯度下降
- [LeetCode][Java] 3Sum Closest
- 2012年5月SAT香港真题解析
- .NET通过配置文件的方式实现静态js文件跨域访问
- 从Git上克隆studio项目的步骤
- 排序
- mavenRepository【maven仓库,全都是maven项目,自己可以在里面下载需要的jar包】
- 网站设计,你需要注意什么?
- leetcode-230-Kth Smallest Element in a BST
- Activiti5.9 流程实例中同一个流程businessKey重复的问题