nums নামক একটি তালিকা এবং একটি মান k দেওয়া আছে। তালিকাটি জোড়ায় ভাগ করা যায় কিনা যাতে প্রতিটি জোড়ার যোগফল k দিয়ে বিভাজ্য হয় তা যাচাই করতে হবে।
উদাহরণ: nums = [4, 7, 2, 5], k = 6 হলে আউটপুট True, কারণ (4,2) এবং (7,5) জোড়ার যোগফল ৬ দিয়ে বিভাজ্য।
সমাধানের ধাপসমূহ
- যদি তালিকার দৈর্ঘ্য বিজোড় হয় তবে False ফেরত দিন
- count := k আকারের তালিকা ০ দিয়ে পূরণ
- প্রতিটি n এর জন্য count[n%k] বাড়ান
- যদি count[0] বিজোড় হয় তবে False ফেরত দিন
- i = 1 থেকে k//2 পর্যন্ত count[i] == count[k-i] কিনা যাচাই করুন
- সব মিললে True ফেরত দিন
উদাহরণ কোড
class Solution:
def solve(self, nums, k):
if len(nums) % 2:
return False
count = [0] * k
for n in nums:
count[n % k] += 1
if count[0] % 2:
return False
for i in range(1, k // 2 + 1):
if count[i] != count[k - i]:
return False
return True
ob = Solution()
nums = [4, 7, 2, 5]
k = 6
print(ob.solve(nums, k))
ইনপুট
[4, 7, 2, 5], 6
আউটপুট
True