ধরুন আমাদের কাছে পূর্ণসংখ্যার একটি অ্যারে রয়েছে, আমাদের আউটপুট সত্য হবে যদি এবং শুধুমাত্র যদি আমরা অ্যারেটিকে তিনটি অ-খালি অংশে ভাগ করতে পারি যার যোগফল সমান৷
আনুষ্ঠানিকভাবে, আমরা অ্যারে পার্টিশন করতে পারি যদি আমরা i+1
সুতরাং ইনপুট যদি [0,2,1,-6,6,-7,9,1,2,0,1] হয়, তাহলে আউটপুটটি সত্য হবে। তিনটি অ্যারে হবে [0,2,1], [-6,6,-7,9,1] এবং [2,0,1]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp :=সমস্ত উপাদানের যোগফল, এবং প্রয়োজনীয়_sum :=temp / 3
- বাম থেকে ডানে ক্রমবর্ধমান যোগফল সংরক্ষণ করতে sum_left সেট করুন
- ডান থেকে বামে ক্রমবর্ধমান যোগফল সংরক্ষণ করতে sum_right সেট করুন
- index1 :=0 এবং index2 :=অ্যারের দৈর্ঘ্য – 1
- যখন index1
- যখন index1
- index1 :=index1 + 1
- index2 :=index2 – 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