মনে করুন nums1 এবং nums2 নামে দুটি অ্যারে (নন-গ্রোইং) আছে। ইন্ডেক্স জোড়া (i, j) যেখানে 0 <= i < nums1-এর আকার, এবং 0 <= j < nums2-এর আকার বৈধ হবে যদি i <= j এবং nums1[i] <= nums2[j] সত্য হয়। জোড়ার দূরত্ব হল (j - i)। আমাদের প্রতিটি বৈধ জোড়া (i,j) থেকে সর্বোচ্চ দূরত্ব বের করতে হবে। যদি কোনো বৈধ জোড়া নেই, তবে 0 রিটার্ন করুন।
সুতরাং, যদি ইনপুট হয় nums1 = [60,40,15,10,5], nums2 = [115,30,25,15,10], তবে আউটপুট হবে 1 কারণ, এখানে বৈধ জোড়াগুলো হল (0,0), (2,2), (2,3), (3,3), (3,4) এবং (4,4), এখানে সর্বোচ্চ দূরত্ব 1 যা বা (2,3) জোড়া বা (3,4) জোড়ার জন্য।
এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব −
যদি nums1-এর লাস্ট এলিমেন্ট > nums2-এর ফার্স্ট এলিমেন্ট হয়, তবে
0 রিটার্ন করুন
i := 0, j := 0 এবং max_dist := 0
যতক্ষণ i < nums1-এর আকার, করুন
যদি j < nums2-এর আকার এবং nums1[i] <= nums2[j] হয়, তবে
max_dist := max_dist এবং (j-i) এর মধ্যে সর্বোচ্চ
j := j + 1
অন্যথায়,
j := j + 1
i := i + 1
max_dist রিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন −
def solve(nums1, nums2):
if nums1[len(nums1)-1] > nums2[0]:
return 0
i = j = max_dist = 0
while i < len(nums1):
if j < len(nums2) and nums1[i] <= nums2[j]:
max_dist = max(max_dist, j-i)
j += 1
else:
j += 1
i += 1
return max_dist
nums1 = [60,40,15,10,5]
nums2 = [115,30,25,15,10]
print(solve(nums1, nums2))
ইনপুট
[60,40,15,10,5], [115,30,25,15,10]
আউটপুট
1