class Solution {
public int threeSumClosest(int[] nums, int target) {
int s=-9999;
int s1=-999;
List list= new ArrayList<Integer>();
for(int i=0;i<nums.length-2;i++){
for(int j=i+1;j<nums.length-1;j++)
{
for(int k=j+1;k<nums.length;k++){
list.add(nums[i] + nums[j] + nums[k]);
}
}
}
Integer a=(Integer) list.get(0)-target;
s1=Math.abs(a);
s=(Integer) list.get(0);
for(int i=1;i<list.size();i++){
Integer o =(Integer) list.get(i);
int i1 = o - target;
int fuzhu=Math.abs(i1);
s1=Math.min(fuzhu,s1);
if (s1==fuzhu){
s=o;
}
}
return s; }
}
高级一点,不用计算每一个三数之和,通过排除法
解法代码:
class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);
int result = nums[0] + nums[1] + nums[2];
for(int i=0;i<nums.length-2;i++){
int left = i+1;
int right = nums.length - 1;
while(left != right){
int sum = nums[i] + nums[left] + nums[right];
if(Math.abs(sum - target) < Math.abs(result - target))
result = sum;
if(sum > target){
right--;
}
else if(sum==target){
return sum;
}
else{
left++;
}
}
}
return result; }
}
题目描述:(三指针题)无脑解法:暴力for,三数所以是三层class Solution { public int threeSumClosest(int[] nums, int target) { int s=-9999; int s1=-999; List list= new ArrayList<Integer>(); for(int i=0;i<nums.length-2;i++){ ..