不重复打印定值二元组_python3

不重复打印排序数组中相加和为给定值的所有二元组

http://www.nowcoder.com/questionTerminal/1ff1a607c81748baa1823ffa687d74c4

需要考虑重复数据的问题,开始没有想到用双指针,后来解决了,是in在list和dict查找的效率问题,严格一点空间复杂度过不了
1、超时

n, k = map(int, input().split())
l = list(map(int, input().split()))
for i in range(n-1):
    x = k - l[i]
    if x < l[i]:
        break
    if x in l:
        if i > 0 and l[i] == l[i-1] or l[i] == x and l.count(l[i]) == 1:
            continue
        print(l[i], x)

2、AC 136ms

n, k = map(int, input().split())
l = list(map(int, input().split()))
m = {}
for i in range(n):
    m[l[i]] = 1 if l[i] not in m.keys() else m[l[i]] + 1
for i in range(n-1):
    x = k - l[i]
    if x < l[i]:
        break
    if x in m.keys():
        if i > 0 and l[i] == l[i-1] or l[i] == x and m[l[i]] == 1:
            continue
        print(l[i], x)
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-04 14:23
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
这不纯纯作弊了吗😢😢😢
编程界菜鸡:信这个的这辈子有了,这智商你靠啥都没用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务