如何针对大型测试用例优化代码

时间:2017-09-01 10:28:59

标签: python performance optimization

所以我正在做的是找到是否有可能找到右侧和左侧的数字总和相等的数字 例如:1 2 1应返回YES,因为2的任一侧的元素总和为1 但是1 1 2 1应该返回false。 我的代码工作除了以下大型测试用例 https://hr-testcases-us-east-1.s3.amazonaws.com/2490/input03.txt?AWSAccessKeyId=AKIAJ4WZFDFQTZRGO3QA&Expires=1504259349&Signature=gdIq12uki3Nq8YeXKDAKdqJG9k0%3D&response-content-type=text%2Fplain

输入行如下第一行包含,测试用例数。对于每个测试用例,第一行包含数组中元素的数量。每个测试用例的第二行包含空格分隔的整数,表示数组。

我的程序的逻辑:如果第一个i元素的总和= total-(第一个i元素的总和) - 元素

代码:

!/ bin中/ Python的

导入sys

def solve(a,n):

T =总和(a)中

if len(a)==1:

    return "YES"

for i in range(1,n-1):

  sum1=0

  sum2=0

  j=i

  for j in range(0,i):

    sum1+=a[j]


  # for j in range(i+1,n):

  #   sum2+=a[j]
  # print str(sum1) + " " + str(sum2)

  if sum1==(sum(a)-a[i])-sum1:

    print str(sum1) + " " + str(sum2)

    return "YES"

return "NO"   

T = int(raw_input()。strip()) for x0 in xrange(T):

n = int(raw_input().strip())

a = map(int, raw_input().strip().split(' '))

print "Iteration " + str(a0)

result = solve(a,n)

print(result)

1 个答案:

答案 0 :(得分:0)

sum(a) # if possible store the value of this outside loop as it is of O(n) complexity
for j in range(0,i): # keep a variable to calculate sum till i instead of looping over.

    sum1+=a[j]
def abc():
    a=[2]
    if len(a)==1:
        return ("yes",0)
    tsum=sum(a) #total sum
    psum=0
    for i in range(1,len(a)):
        psum=psum+a[i-1]     # temp var
        #print psum;
        if psum==tsum-a[i]-psum:
            return ("yes",i)
    return "no"
print abc()