Sherlock and Array
صورت مسأله: غضنفر آرایه ای به قلندر می دهد و از او می خواهد مشخص کند که آیا عددی در آن وجود دارد که مجموع اعداد سمت چپ و راست آن برابر باشد یا خیر...
*مثال:
عدد اول تعداد آرایه ها، عدد دوم طول هر آرایه و عدد سوم خود آرایه است. خروجی برای هر آرایه بله (چنین عددی وجود دارد) یا خیر (... وجود ندارد) است.
*ورودی:
۲
۴
۳۱۳۴
۸
۱۷۲۳۹۸۵۹
*خروجی:
بله
خیر
T = input()
answers = []
for i in range(T) :
N = input()
A = [int(x) for x in raw_input().split()]
count = 0
for array in A :
if count != 0 and count != (len(A) - 1) and sum(A[:count]) == sum(A[count+1:]) :
answers.append("YES")
break
elif len(A) == 1 :
answers.append("YES")
break
elif count == len(A) - 1 :
answers.append("NO")
count += 1
for answer in answers :
print answer
دقت کنید time complexity راه حل بالا (O(N*M هست در صورتی که میشه با الگوریتم سریعتری هم حلش کرد