首页 > 解决方案 > 算法 python3 时间效率

问题描述

在 Python 中,顶部是函数式的,而底部不是。非功能型有超时,功能型已经过去。有什么区别?

环境是python3环境。

import sys

n, m = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))

start = 0
end = max(arr)
def solution(arr, start, end):
    result = 0
    while start <= end:
        total = 0
        mid = (start + end) // 2
        for i in arr:
            if i > mid:
                total += i - mid
        if total < m:
            end = mid - 1
        else:
            result = mid
            start = mid + 1
    return result

print(solution(arr, start, end))
import sys

n, m = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))

start = 0
end = max(arr)
result = 0

while start <= end:
    total = 0
    mid = (start + end) // 2
    for i in arr:
        if i > mid:
            total += i - mid
    if total < m:
        end = mid - 1
    else:
        result = mid
        start = mid + 1

print(result)

在此处输入图像描述

标签: python-3.xalgorithm

解决方案


我点击了相应SPOJ 问题的链接。看起来对于这个特定的问题,python 3 的限制非常接近,并且您的 TLE 是由于 I/O 造成的。(在这里阅读评论)。你的算法看起来是正确的。

就功能调用和循环的差异而言。我将您的两个代码都提交给了 SPOJ,都是TLE

我会建议筛选问题下方的评论,以寻找潜在的陷阱以供将来参考,这真的很有帮助。


推荐阅读