LeetCode算法入门- 3Sum Closest -day10
Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
Example:
Given array nums = [-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(int[] nums, int target) {int len = nums.length;int min = Integer.MAX_VALUE;int result = 0;//记得先排好序Arrays.sort(nums);for(int i = 0; i < len; i++){//利用left和right两个指针int left = i + 1;int right = len - 1;while(left < right){int sum = nums[i] + nums[left] + nums[right];int diff = Math.abs(sum - target);if(diff < min){//用一个min值来保存差距最小的值,记得保存住此时的3sum值是多少min = diff;result = sum;}if(sum >= target)right--;elseleft++;}}return result;}
}