16. 最接近的三数之和
中等
相关标签
相关企业
给你一个长度为 n
的整数数组 nums
和 一个目标值 target
。请你从 nums
中选出三个整数,使它们的和与 target
最接近。
返回这三个数的和。
假定每组输入只存在恰好一个解。
示例 1:
输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>int main(void) {int i[]={-1,2,1,-4};int z=1;int o[10]={}; int n=0; //任意三数之和for(int a=0;a<4;a++){ for(int b=a+1;b<4;b++){for(int c=b+1;c<4;c++){int k=i[a]+i[b]+i[c]; o[n]=k;n++;}}}for(int a=0;a<n;a++){
// printf("%d ,",o[a]); //2 ,-3 ,-4 ,-1 ,}int pd(int i1,int i2){ //和与1比较int k=0;if(i1>i2){k=i1-i2;}if(i1<0){k=abs(i1)+i2;}if((i1>0)&&(i1<i2)){k=i2-i1;}return k;}int zz=pd(o[0],z);int w=0;for(int a=0;a<n;a++){int k=pd(o[a],z);if(zz>=k){zz=k;w=o[a];}}printf("%d\n",w);return 0;
}