要求時間復雜度是O(n)。如果有多對數字的和等於輸入的數字M,輸出任意一對即可。
例如輸入數組1、2、4、7、11、15和數字15。由於4+11=15,因此輸出4和11。
思路:
(1)讓指針指向數組的頭部和尾部,相加,如果小於M,則增大頭指針,如果大於則減小尾指針
(2)退出的條件,相等或者頭部=尾部
算法:
void function(int a[],int n,int M){
int i=0,j=n-1;
while(i!=j){
if(a[i]+a[j]==M){
printf("%d,%d",a[i],a[j]);
break;
}
a[i]+a[j]>M?j--:i++;
}
}