using namespace std;#define N 100005int A[N],B[N],n,m,x;int main(){ sc"/>

数组元素的目标和

   日期:2020-09-12     浏览:92    评论:0    
核心提示:数组元素的目标和定义两个指针,因为序列有序,所以i指针从前往后走,j指针从后往前走,这样可以避免j指针多次遍历,减少时间复杂度编码方式一:手动操控i,j 指针的加加减减;调试多次才成功。注意:int i=m-1;语句要放在scanf("%d",&m);后面,否则给i赋值为0;#includeusing namespace std;#define N 100005int A[N],B[N],n,m,x;int main(){ sc

数组元素的目标和



定义两个指针,因为序列有序,所以i指针从前往后走,j指针从后往前走,这样可以避免j指针多次遍历,减少时间复杂度
编码方式一:
手动操控i,j 指针的加加减减;调试多次才成功。
注意:int i=m-1;语句要放在scanf("%d",&m);后面,否则给i赋值为0;

#include<bits/stdc++.h>
using namespace std;
#define N 100005
int A[N],B[N],n,m,x;
int main(){ 
    scanf("%d%d%d",&n,&m,&x);
     int i=0,j=m-1;
    for(int i=0;i<n;i++) scanf("%d",&A[i]);
    for(int j=0;j<m;j++) scanf("%d",&B[j]);
      while(i<n)
    { 
          while(A[i]+B[j]>x&&j>0){ 
            j--;
                 }
       if(A[i]+B[j]==x) printf("%d %d",i,j);
         i++;
    }
        return 0;
}

代码方式二:
利用for循环,代码简洁易调试

#include<bits/stdc++.h>
using namespace std;
#define N 100005
int A[N],B[N],n,m,x;
int main(){ 
    scanf("%d%d%d",&n,&m,&x);
    for(int i=0;i<n;i++) scanf("%d",&A[i]);
    for(int j=0;j<m;j++) scanf("%d",&B[j]);
     for(int i=0,j=m-1;i<n;i++)
     { 
         while(A[i]+B[j]>x) j--;
          if(A[i]+B[j]==x)
         printf("%d %d",i,j);
     }
        return 0;
}


待大宝贝批阅…

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服