ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে, আমাদের পরীক্ষা করতে হবে যে আমরা তালিকাটিকে A এবং B দুটি গ্রুপে বিভক্ত করতে পারি যে যেমন:A এর যোগফল এবং B এর যোগফল একই। এখানে A-এর প্রতিটি সংখ্যা B-এর প্রতিটি সংখ্যার থেকে কঠোরভাবে ছোট।
সুতরাং, যদি ইনপুটটি nums =[3, 4, 5, 12] এর মত হয়, তাহলে আউটপুটটি True হবে, যেমন আমাদের A =[3,4,5] এবং B =[12] এবং উভয়ের যোগফল 12 থাকতে পারে। .
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
তালিকার সংখ্যাগুলি সাজান
-
মোট :=সংখ্যায় সমস্ত উপাদানের যোগফল
-
s :=0, i :=0
-
যখন আমি <সংখ্যার আকার, কর
-
n :=সংখ্যা[i]
-
যখন i <সংখ্যা এবং সংখ্যার আকার[i] n, do
এর মতো-
s :=s + nums[i]
-
i :=i + 1
-
-
যদি s মোট −s এর সমান হয়, তাহলে
-
রিটার্ন ট্রু
-
-
-
রিটার্ন ফলস
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, nums): nums.sort() total = sum(nums) s = 0 i = 0 while i < len(nums): n = nums[i] while i < len(nums) and nums[i] == n: s += nums[i] i += 1 if s == total - s: return True return False ob = Solution() nums = [3, 4, 5, 12] print(ob.solve(nums))
ইনপুট
[3, 4, 5, 12]
আউটপুট
True