题目描述
求A[i] + B[j] == k 的 (i , j) 对
样例
输入
4 5 6
1 2 4 7
3 4 6 8 9
输出
1 1
算法
(双指针) O(n)
i从 0开始 从前往后遍历
j从 m - 1开始 从后向前遍历
和纯暴力的O(n2)算法的区别就在于
算法
时间复杂度 O(n)
算法思想:我这个方法和别的双重嵌套循环不同,直接一个while循环,双指针分别首尾,一遍过
C++ 代码
include[HTML_REMOVED]
using namespace std;
const int N=100010;
int A[N];
int B[N];
int main(){
int n,m,s;
cin>>n>>m>>s;
for(int i=0;i<n;i)scanf(“%d”,&A[i]);
for(int i=0;i<m;i)scanf(“%d”,&B[i]);
int i=0,j=m-1;
while(i<n&& j>=0){
if (A[i]+B[j]==s){
cout<<i<<" "<<j<<endl;
j--;
}
else if(A[i]+B[j]>s)j--;
else i++;
}
return 0;
}