快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解,算法复杂度<=o(n)。 假如有如下已排好序的数组,如图所示:1,4,5,6,7,8,9 给定Sum= 10

int [] team = new int[7]{1,4,5,6,7,8,9};

int k=0,p=team.length - 1;

for(int i=0;i<team.length;i++)

{

    if(team[k]+team[p]==10) break;

    if(team[k]+team[p]>10) p--;

    if(team[k]+team[p]<10 k++;

}

 

posted on 2014-12-09 09:34  catch_you  阅读(132)  评论(0编辑  收藏  举报