我知道我应该使用NumPy
和我所拥有的列表一样的大数组,但我不能,因为我正在解决Kattis上的一个问题(一个有问题的网站,你必须提交代码,他们编译它)并使用行import numpy
提交代码会产生运行时错误。
我认为花费最多时间的过程是我阅读和排序所有数据。我阅读并按照这样排序:
def readData():
import sys
lines = [line.strip() for line in sys.stdin]
points = [tuple([int(num) for num in line.split(" ")]) for line in lines] #we have a list of tuples: [(x1, y1), ... (xn, yn)]
sortedBySums = sorted(points, key = lambda x: (sum(x), x[0]))
sortedBySub = sorted(points, key = lambda x: (sub(x), x[0]))
稍后我也会访问表sortedBySums
和sortedBySubs
的元素,所以也许我也可以加快查找速度,但不知道怎么做。我正在使用list.index(element)
进行元素查找。此外,sub(x)
函数只是从第一个坐标中减去第二个坐标。
有什么方法可以加快这个过程吗? sort
内置函数应该非常快,从我学到的内容和使用for loop
这样的for loop
也应该比使用常规UIGraphicsGetCurrentContext()
快得多,但还有其他的东西吗?可以大大改善时间消耗吗?
答案 0 :(得分:1)
尝试以下方法:
points = [(int(line[i]), int(line[i+1])) for i in range(0,len(line)-1,2) for line in sys.stdin]
而不是:
lines = [line.strip() for line in sys.stdin]
points = [tuple([int(num) for num in line.split(" ")]) for line in lines] #we have a list of tuples: [(x1, y1), ... (xn, yn)]