ধরুন আমাদের nums নামে একটি অ্যারে আছে এবং আরেকটি মান k। আমাদের সংখ্যার অ-খালি পরের সংখ্যাগুলি খুঁজে বের করতে হবে যাতে এটির সর্বনিম্ন এবং সর্বাধিক উপাদানের যোগফল k এর থেকে ছোট বা সমান হয়। উত্তরগুলি খুব বড় হতে পারে তাই উত্তর মোড 10^9 + 7 ফেরত দিন।
সুতরাং, যদি ইনপুটটি nums =[4,6,7,8] k =11 এর মত হয়, তাহলে আউটপুট হবে 4 কারণ এর মত পরবর্তি আছে
-
[৪], এখানে সর্বনিম্ন 4, সর্বোচ্চ 4, তাই 4+4 <=11
-
[৪,৬], এখানে সর্বনিম্ন ৪, সর্বোচ্চ ৬, তাই ৪+৬ <=১১
-
[৪,৬,৭], এখানে সর্বনিম্ন ৪, সর্বোচ্চ ৭, তাই ৪+৭ <=১১
-
[৪,৭], এখানে সর্বনিম্ন ৪, সর্বোচ্চ ৭, তাই ৪+৭ <=১১
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
তালিকার সংখ্যাগুলি সাজান
-
m :=10^9 + 7
-
বাম :=0
-
ডান:=সংখ্যার আকার - 1
-
res :=0
-
যখন বামে <=ডানে, কর
-
যদি nums[left] + nums[ডান]> k হয়, তাহলে
-
ডান :=ডান - 1
-
-
অন্যথায়,
-
num_inside :=ডান - বাম
-
res :=(res + (2^num_inside) mod m) mod m
-
left :=left + 1
-
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(nums, k): nums.sort() m = 10**9 + 7 left = 0 right = len(nums) - 1 res = 0 while(left <= right): if nums[left] + nums[right] > k: right -= 1 else: num_inside = right - left res = (res + pow(2, num_inside, m)) % m left += 1 return res nums = [4,6,7,8] k = 11 print(solve(nums, k))
ইনপুট
[4,6,7,8], 11
আউটপুট
4