Python 3.x python3算法的时间效率

Python 3.x python3算法的时间效率,python-3.x,algorithm,Python 3.x,Algorithm,在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 whil

在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))
导入系统 n、 m=map(int,sys.stdin.readline().split()) arr=list(映射(int,sys.stdin.readline().split()) 开始=0 结束=最大值(arr) def解决方案(arr、开始、结束): 结果=0 中途开始时: 总计+=i-中 如果总数 导入系统 n、 m=map(int,sys.stdin.readline().split()) arr=list(映射(int,sys.stdin.readline().split()) 开始=0 结束=最大值(arr) 结果=0 中途开始时: 总计+=i-中 如果总数

我按照链接找到了相应的。对于这个特殊的问题,Python3的限制已经非常接近了,您的TLE是由I/O造成的(请阅读注释)。您的算法看起来正确

考虑到函数调用和循环的差异。我向SPOJ提交了两个代码,都是TLE


我建议您对问题下方的评论进行筛选,找出潜在的缺陷,以备将来参考。这确实很有帮助。

您能详细说明一下您的超时系统吗?另外,请用输入测试用例和预期输出补充答案。这是本网站。因为它是一个韩国算法站点,比如Litcode,所以测试用例是隐藏的。语法上没有区别,只是它被包装在一个函数中,但它超时了,所以我问了一个问题。python3的前两个案例就是上述问题的案例。
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)