ধরুন, একটি সর্টেড অ্যারে arr এবং একটি সংখ্যা k দেওয়া হয়েছে। আমাদের যাচাই করতে হবে যে অ্যারেটি কি জোড়ায় ভাগ করা যায় যাতে প্রতিটি জোড়ার যোগফল k হয়।
যেমন, ইনপুট arr = [1, 2, 3, 4, 5, 6], k = 7 হলে আউটপুট হবে True, কারণ জোড়াগুলো: (1,6), (2,5), (3,4)।
সমাধানের ধাপসমূহ
n = len(arr)। যদি বিজোড় হয়, তবে False।- টু-পয়েন্টার:
low = 0, high = n-1। while low < high:- যদি
arr[low] + arr[high] != kহয়, তবে False। low++,high--।
- যদি
- লুপ শেষ হলে True ফেরত দিন।
উদাহরণ কোড
def solve(arr, k):
n = len(arr)
if n % 2 == 1:
return False
low = 0
high = n - 1
while low < high:
if arr[low] + arr[high] != k:
return False
low += 1
high -= 1
return True
arr = [1, 2, 3, 4, 5, 6]
k = 7
print(solve(arr, k))
ইনপুট
[1, 2, 3, 4, 5, 6], 7
আউটপুট
True