RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1194759
Accepted
Krovorgen
Krovorgen
Asked:2021-10-24 15:01:03 +0000 UTC2021-10-24 15:01:03 +0000 UTC 2021-10-24 15:01:03 +0000 UTC

帮助优化生产代码。Python

  • 772

找出列表中两个数字的最大乘积。数字也可以是负数。代码正在运行,但测试程序发出 Time Limit Exceeded。如何优化?是否可以将现有的 2 for 转换为列表理解是很有趣的,因为我没能在 3 小时内做到这一点。

def composition():
    s = [int(i) for i in input().split()]
    lists = []
    total = 0
    for i in range(len(s)):
        for j in range(len(s)):
            if s[i] * s[j] > total and i != j:
                total = s[i] * s[j]
                lists.append(s[i])
                lists.append(s[j])
    a = lists[-1]
    b = lists[-2]
    if a < b:
        return a, b
    return b, a
print(*composition())
python
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    Zhihar
    2021-10-24T15:30:57Z2021-10-24T15:30:57Z

    不使用任何库的最短代码:)

    data = sorted([*map(int, input().split())])
    
    print(data[0], data[1]) if data[0] * data[1] > data[-1] * data[-2] else print(data[-1], data[-2])
    

    更短的解决方案:

    data = sorted([*map(int, input().split())])
    
    print(*max(data[:2], data[-2:], key=lambda obj: obj[0] * obj[1]))
    
    • 8
  2. Zhihar
    2021-10-24T15:13:53Z2021-10-24T15:13:53Z

    好吧,如果您完全正面决定,那只是一个lobeshnik,那么

    data = [*map(int, input().split())]
    
    # оцениваем только положительные числа
    max1pos = max(data[0], data[1])
    max2pos = min(data[0], data[1])
    
    for value in data:
        if value <= 0:
            continue
    
        if value >= max1pos:
            max1pos, max2pos = value, max1pos
        elif value > max2pos:
            max2pos = value
    
    # оцениваем только отрицательные числа числа
    max1neg = min(data[0], data[1])
    max2neg = max(data[0], data[1])
    
    for value in data:
        if value > 0:
            continue
    
        if value <= max1neg:
            max1neg, max2neg = value, max1neg
        elif value < max2neg:
            max2neg = value
    
    # выводим результат
    print(max1pos, max2pos) if max1pos * max2pos > max1neg * max2neg else print(max1neg, max2neg)
    

    更好(更短):

    data = [*map(int, input().split())]
    
    max1pos, max2pos = max(data[0], data[1]), min(data[0], data[1])
    max1neg, max2neg = max2pos, max1pos
    
    for value in data:
        if value <= 0:
            if value <= max1neg:
                max1neg, max2neg = value, max1neg
            elif value < max2neg:
                max2neg = value
        else:
            if value >= max1pos:
                max1pos, max2pos = value, max1pos
            elif value > max2pos:
                max2pos = value
    
    # выводим результат
    print(max1pos, max2pos) if max1pos * max2pos > max1neg * max2neg else print(max1neg, max2neg)
    
    • 3
  3. Tihon
    2021-10-24T15:24:03Z2021-10-24T15:24:03Z

    我将假设序列中的数字是唯一的。Itertools.combinations非常适合查找所有可能的非重复组合。对于重复项 -  combination_with_replacement。

    from itertools import combinations
    
    data = map(int, input().split()))
    uq_pairs = combinations(data)   # только уникальные неповторяющиеся пары
    
    result = max(
        uq_pairs, 
        key=lambda x: x[0] * x[1],  # функция-ключ для поиска максимума
    )
    
    • 3

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5