TBD快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值

思想是排序后

bool getSumNum(int[] arr,int Sum),   //arr为数组,Sum为和   
{  
    int i,j;  
    for(i = 0, j = n-1; i < j ; )  
    {  
        if(arr[i] + arr[j] == Sum)  
            return true; 
        else if(arr[i] + arr[j] < Sum)  
            i++;  
        else  
            j--;  
    }  
    return true;  
}  

 

whu的oj上面,求的是在数组中找三个位置不同(value可以相同)的元素,使得C=A+B

,,,我一开始是unordered_map的做法,平方的时间复杂度超时了。

目前还不知做法。

http://acm.whu.edu.cn/weblearn/problem/74

posted @ 2020-12-30 19:41  TheDa  阅读(87)  评论(0编辑  收藏  举报