求各位大牛帮帮忙,感谢!!!

2018-08-30 15:00:21 +08:00
 GJXxiaoBai
一个无序不重复的整数数组, 给一个数值为 k, 求有多少对数之和为 k (两个数相加等于 k ), 有多少对之差为 k
希望各位大佬能提供代码,谢谢了!!!
1945 次点击
所在节点    Python
8 条回复
jiakangzhong
2018-08-30 15:31:08 +08:00
给了估计也看不懂

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
long long a[50010],k;
int main()
{
scanf("%lld%d",&k,&n);
bool temp=false;
for(int i=1;i<=n;i++)//从第一位开始录入
scanf("%lld",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){//核心代码
if((a[i]+a[n])<k)continue;//如果相加小于题定值,退出本次循环
for(int j=i+1;j<=n&&a[i]+a[j]<=k;j++){
if(a[i]+a[j]==k){
temp=true;
printf("%lld %lld\n",a[i],a[j]);
}
}
}
if(!temp)printf("No Solution\n");
return 0;
raycool
2018-08-30 15:32:50 +08:00
leetcode 上的第一题?
ranoff
2018-08-30 15:54:38 +08:00
给个思路吧:先排序,排序的时候顺便把小于 k 和大于 k 的拆开,然后遍历
imn1
2018-08-30 15:58:13 +08:00
@ranoff
还有单双,减少遍历次数
Yourshell
2018-08-30 15:58:47 +08:00
x=k-list[n], x==list[m]
感觉就是 leetcode 第一题
ranoff
2018-08-30 16:00:19 +08:00
@imn1 是的
imn1
2018-08-30 16:25:17 +08:00
如果不考虑优化,py 代码很简单
pandas
第一列 = 原始数列
第二列 = K - 第一列
第三列 = 第二列 in 第一列 (bool)
提取第三列为 true 的所有行,并去掉第三列

求差同理
EV3
2018-09-01 18:40:28 +08:00
是两数之和吗?
我的解法 https://www.jianshu.com/p/6f92ab0fe509
就是效率比较感人 执行用时:988 ms 超过 62.31 % 的 python 提交记录

自学 Python 2 个月 之前没有编程经历 请勿见笑....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/484575

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX