16. 3Sum Closest
题目链接:https://leetcode.com/problems/3sum-closest/
解题思路:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。1、题目要求找最小的差值,那我们和上题类似,先求三个数的和,然后减去目标值,不停的更新最小的差值。
2、判断上述三个数的和是否等于目标值,如果等,返回和值。如果目标值小于和值,说明和值数不够大,所以第二个指针要往后移。
1 class Solution { 2 public int threeSumClosest(int[] nums, int target) { 3 4 if(nums.length<3||nums==null) 5 return 0; 6 int val=0; 7 int min = Integer.MAX_VALUE; 8 Arrays.sort(nums); 9 for(int i=0;i<=nums.length-3;i++) 10 { 11 int low =i+1; 12 int high = nums.length-1; 13 14 while(low<high) 15 { 16 int sum = nums[i]+nums[low]+nums[high]; 17 if(Math.abs(target-sum)<min) 18 { 19 min = Math.abs(target-sum); 20 val = sum; 21 } 22 if(target==sum) 23 { 24 return val; 25 } 26 else if(target>sum) 27 { 28 low++; 29 } 30 else if(target<sum) 31 { 32 high--; 33 } 34 35 36 } 37 } 38 return val; 39 40 } 41 }

更多精彩