排序数组中找和的因子:

关键点:
有序,可用双指针法扫描。
代码:
#include<iostream>
using namespace std;
void printSumK(int arr[],int len,int k){
int begin=0;
int end=len-1;
while(begin<end){
while((arr[begin]+arr[end])<k){
begin++;
}
while((arr[begin]+arr[end])>k){
end--;
}
if(begin!=end){
cout<<arr[begin]<<" "<<arr[end]<<endl;
begin++;
end--;
}
}
}
int main(){
int arr[]={-8,-4,-3,0,2,4,5,8,9,10};
int len=10;
int k=10;
printSumK(arr,len,k);
return 0;
}
结果:

本文介绍了一种在已排序数组中寻找两数之和等于特定值k的有效算法。利用双指针技术,从数组两端开始向中间逼近,直至找到满足条件的数对。此方法充分利用了数组的有序特性,提高了查找效率。

被折叠的 条评论
为什么被折叠?



