如何才能更快地编写python代码,从而通过长时间给定的测试用例? def解决方案(价值、目标): 极限=0 计数=0 如果目标>总和(价值): 返回-1 以价值计算: 如果limit

如何才能更快地编写python代码,从而通过长时间给定的测试用例? def解决方案(价值、目标): 极限=0 计数=0 如果目标>总和(价值): 返回-1 以价值计算: 如果limit,python,Python,一个例子会很好,但是有两件事:当前,您为每个查询检查所有事务(实际上是两次,因为您每次都使用sum命令)。首先收集查询,因为在获得所有查询之前不会给出输出。然后按大小对查询排序,首先是最小的。然后,当对事务进行汇总时,您可以一次完成查询,在达到每个事务的值时进行回答。所有剩余的问题都可以用-1回答,而不需要求和。(如果您需要以正确的顺序输出,只需确保顺序安全即可。) 第二件事是,一旦完成了最后一个查询,就结束循环,不需要遍历所有剩余的项。当然,这取决于查询。最快的解决方案是对沃斯数组的累积和版本

一个例子会很好,但是有两件事:当前,您为每个查询检查所有事务(实际上是两次,因为您每次都使用sum命令)。首先收集查询,因为在获得所有查询之前不会给出输出。然后按大小对查询排序,首先是最小的。然后,当对事务进行汇总时,您可以一次完成查询,在达到每个事务的值时进行回答。所有剩余的问题都可以用-1回答,而不需要求和。(如果您需要以正确的顺序输出,只需确保顺序安全即可。)


第二件事是,一旦完成了最后一个查询,就结束循环,不需要遍历所有剩余的项。当然,这取决于查询。

最快的解决方案是对沃斯数组的累积和版本进行排序,并使用二分法直接查找每个查询的事务数。请参阅itertools模块中的累加和对分模块中的对分


一个更简单(但效率不高)的改进是在Q循环之前计算一次总价值,并将其作为
totalWorth
参数传递给
solution
函数。在
target>sum(worth)
条件中,使用
totalWorth
参数而不是
sum(worth)
可以节省大量的时间,如果worth有许多条目。

最好给出一个示例,这样我们就可以重现案例。如果您等待用户输入每个查询,速度不会提高…请提供一个示例输入和输出
pythonTransactions T:5每个事务的值T整数:1 2 1 3 4查询数Q=3接下来的Q行包含一个整数,每个整数表示每日目标。4 2 10每个目标3 2 5
事务的输出T:5每个事务的值T整数:1 2 1 3 4查询数Q=3下一个Q行包含一个整数,每个整数表示每日目标。4 2 10每个目标的输出3 2 5