मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी A है, तो हमारा आउटपुट सही होगा यदि और केवल तभी हम सरणी को तीन गैर-रिक्त भागों में विभाजित कर सकते हैं, जिनका योग बराबर है।
औपचारिक रूप से, हम सरणी को विभाजित कर सकते हैं यदि हम इंडेक्स i+1
तो अगर इनपुट [0,2,1,-6,6,-7,9,1,2,0,1] है, तो आउटपुट सही होगा। तीन सरणियाँ [0,2,1], [-6,6,-7,9,1] और [2,0,1]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object):
def canThreePartsEqualSum(self, A):
temp = sum(A)
if (temp%3 != 0):
return 0
sum_left=[0 for i in range(len(A))]
sum_left[0] = A[0]
sum_right=[0 for i in range(len(A))]
sum_right[-1] = A[-1]
for i in range(1,len(A)):
sum_left[i] = A[i]+sum_left[i-1]
for i in range(len(A)-2,-1,-1):
sum_right[i] = A[i]+sum_right[i+1]
#print(sum_left,sum_right)
required_sum = temp/3
index1 = 0
index2 = len(A)-1
while index1 < index2:
while index1 <index2 and sum_left[index1]!=required_sum:
index1+=1
while index2>index1 and sum_right[index2]!=required_sum:
index2-=1
return index1<index2 and index1 != index2
ob1 = Solution()
print(ob1.canThreePartsEqualSum([0,2,2,-6,6,-7,9,2,2,0,2]))
इनपुट
[0,2,1,-6,6,-7,9,1,2,0,1]
आउटपुट
true