中国领先的工业平台

返回贤集网 返回微头条
贤集网技术微头条APP获取

三数之和

 山东大明消毒科技有限公司

下载贤集网APP入驻自媒体

三数之和为所要的数,或三数之和为最接近所要的数。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
vector<int> threeSumClosest(vector<int> &num,int target)
{
    int len=num.size();
    int min=INT_MAX;
    vector<int> result;
    for(int i=0;i<len;i++)
    {
        int start=i+1,end=len-1;
        while(start<end)
        {
              if(num[start]+num[end]==target-num[i])
              {
        min=0;
        result.push_back(num[i]);
        result.push_back(num[start]);
        result.push_back(num[end]);
        result.push_back(1);
        break;
               }
    else if(num[start]+num[end]<target-num[i])
    {
                if(min>abs(num[i]+num[start]+num[end]-target))
    {
    min=abs(num[i]+num[start]+num[end]-target);
                 result.push_back(num[i]);
    result.push_back(num[start]);
    result.push_back(num[end]);
    result.push_back(0);
    }
    start++;
    }
    else
    {
                if(min>abs(num[i]+num[start]+num[end]-target))
    {
    min=abs(num[i]+num[start]+num[end]-target);
                 result.push_back(num[i]);
    result.push_back(num[start]);
    result.push_back(num[end]);
    result.push_back(0);
    }
    end--;
    }
    if(result[result.size()-1]==1) break;
        }  
    while(i<len && num[i]==num[i+1]) i++;
    }
    return result;
}
最新回复

还没有人回复哦,抢沙发吧~

发布回复

为您推荐

热门交流