LeetCode - 16. 3Sum Closest
来源:互联网 发布:c语言鸡兔同笼 编辑:程序博客网 时间:2024/05/01 20:24
方法一:
这一道题目自然也是有Brute Froce的解法,一开始思考的方法是通过三重循环和一个HashMap,分别记下来每种组合所对应的sum的大小,然后再从中找到与target最为接近的数返回。这种方法的时间复杂度很高,为O(n^3),再加上HashMap和比较大小所用的时间,在leetcode oj上面几乎肯定要超时,所以详细的代码就不写了
方法二:
思考前面做过的3Sum题目,在这一题目中,我们通过一个外层循环遍历数组中的每个数字,然后在每一个外层循环中设置两个分别指向数组剩余部分的头和尾的指针,然后通过移动两个指针来找到target。这一道题目与3Sum非常相似,我们可以考虑同样的思路,但是注意到这一题目中也有变化,首先,我们并不是去寻找target,而是去寻找与target相差最小的数字,这是一个常见的问题,可以通过设置一个初始值为Integer,MAX_VALUE的标志量,每一个差值与其比较来得到解决,另一个不同则是这里需要的只是一个数字,并不用找出全部的组合,所以在答案中并不需要对数组中元素的重复性进行检验
public class Solution { public int threeSumClosest(int[] nums, int target) { //sort array Arrays.sort(nums); int result = 0; int pfront; int pback; //max value int diff = Integer.MAX_VALUE; for(int i = 0; i < nums.length - 2; i++){ //set pointers pfront = i + 1; pback = nums.length - 1; while(pfront < pback){ int sum = nums[i] + nums[pfront] + nums[pback]; if(sum == target){ return target; }else if(Math.abs(target - sum) < diff){ //update closest value and diff diff = Math.abs(target - sum); result = sum; } //move pointers if(sum < target){ pfront++; }else{ pback--; } } } return result; }}
知识点:
1. Integer.MAX_VALUE, Integer.MIN_VALUE;
2. 找与一个数字相差最近的数字是一类常见的子问题,可以设置一个标志量,将其初始值设置为最大或者最小,然后得到的每一个结果都与其进行比较,根据情况更新
0 0
- LeetCode 16. 3Sum Closest
- LeetCode --- 16. 3Sum Closest
- [Leetcode] 16. 3Sum Closest
- 【leetcode】16. 3Sum Closest
- [leetcode] 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- LeetCode - 16. 3Sum Closest
- [LeetCode]16. 3Sum Closest
- LeetCode 16. 3Sum Closest
- LeetCode *** 16. 3Sum Closest
- Leetcode 16. 3Sum Closest
- leetcode 16. 3Sum Closest
- 【LeetCode】16. 3Sum Closest
- leetcode 16. 3Sum Closest
- 【leetcode】16. 3Sum Closest
- leetcode 16. 3Sum Closest
- DP---Maximum Subarray
- Postman
- API 23及之后版本关于用android studio 中LocationManager的方法使用
- pdf reference 格式详细说明
- Got fatal error 1236 from master when reading data from binary log
- LeetCode - 16. 3Sum Closest
- java语法小结5
- 剑指Offer——不使用循环,判断,选择语句实现1+2+3....+n
- stretchableImageWithLeftCapWidth
- 【POJ2407】Relatives——欧拉数
- 一次应用OOM排查
- 总结基于mysql,oracle的jdbc对数据库的操作(增删查改,批量操作,事务)
- 站群网站八大盈利模式浅析
- Springmvc精简教程(1)