ধরুন আমাদের একটি অ্যারে সংখ্যা এবং একটি সংখ্যা আছে। আমরা অ্যারেতে উপাদান যোগ করতে পারি, যেমন রেঞ্জের যে কোনো সংখ্যা [1, n] (উভয়ই অন্তর্ভুক্ত) অ্যারের কিছু উপাদানের যোগফল দ্বারা গঠিত হতে পারে। আমাদের প্রয়োজনীয় প্যাচের ন্যূনতম সংখ্যা খুঁজে বের করতে হবে। সুতরাং যখন অ্যারেটি [1,4] এর মত হয় এবং প্রদত্ত সংখ্যা n =7 হয়, তখন আউটপুট 1 হবে, যেমন প্রাথমিকভাবে সংখ্যাগুলি [1], [4] এবং [1,4] =5, এখন যদি আমরা যোগ করি 2 অ্যারেতে, তারপর সংখ্যাগুলি হবে [1], [2], [4], [1,2], [1,4], [2,4], [1,2,4], তাই যোগফল মান যথাক্রমে 1, 2, 4, 3, 5, 6, 7 হবে৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
req :=1, i :=0, ret :=0
-
যখন req <=n, do −
-
যদি i <সংখ্যা এবং সংখ্যার আকার[i] <=req, তারপর,
-
req =req + সংখ্যা[i]
-
i 1 দ্বারা বাড়ান
-
-
অন্যথায়
-
req =req + req
-
1 দ্বারা ret বাড়ান
-
-
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; class Solution { public: int minPatches(vector<int>& nums, int n) { long long int req = 1; int i = 0; int ret = 0; while(req <= n){ if(i < nums.size() && nums[i] <= req){ req += nums[i]; i++; } else { req += req; ret++; } } return ret; } }; main(){ Solution ob; vector<int> v = {1,4}; cout << (ob.minPatches(v, 7)); }
ইনপুট
{1,4}
আউটপুট
1