কম্পিউটার

C++ এ K-এর থেকে কম সাবারে পণ্য


ধরুন আমরা ধনাত্মক পূর্ণসংখ্যা সংখ্যার একটি অ্যারে দিয়েছি। আমাদের (সংলগ্ন) সাবয়ারের সংখ্যা গণনা করতে হবে এবং মুদ্রণ করতে হবে যেখানে সাবয়ারের প্রতিটি উপাদানের গুণফল k-এর চেয়ে কম। সুতরাং ইনপুট যদি [10,5,2,6] এবং k :=100 এর মত হয়, তাহলে আউটপুট হবে 8। তাই সাবয়ারেগুলি হবে [[10], [5], [2], [6], [১০, ৫], [৫, ২], [২, ৬] এবং [৫, ২, ৬]]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • temp :=1, j :=0 এবং উত্তর :=0
  • এর জন্য আমি 0 থেকে অ্যারের আকারের পরিসরে
    • temp :=temp * nums[i]
    • যখন temp> =k এবং j <=i, do
      • temp :=temp / nums[j]
      • j 1 দ্বারা বাড়ান
    • উত্তর :=উত্তর + (i – j + 1)
  • উত্তর ফেরত দিন

উদাহরণ(C++)

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
public:
   int numSubarrayProductLessThanK(vector<int>& nums, int k) {
      lli temp = 1;
      int j = 0;
      int ans = 0;
      for(int i = 0; i < nums.size(); i++){
         temp *= nums[i];
         while(temp >= k && j <= i) {
            temp /= nums[j];
            j++;
         }
         ans += (i - j + 1);
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v = {10,5,2,6};
   cout << (ob.numSubarrayProductLessThanK(v, 100));
}

ইনপুট

[10,5,2,6]
100

আউটপুট

8

  1. C++ এ N এর থেকে কম বা সমান সংখ্যার মধ্যে সংখ্যার সর্বোচ্চ গুণফল বের করুন

  2. C++ এ Y এর চেয়ে কম সংখ্যা সহ সেটের ন্যূনতম সংখ্যা

  3. C++ এ n এর থেকে কম বা সমান সমস্ত ফ্যাক্টরিয়াল সংখ্যা খুঁজুন

  4. একটি পণ্য অ্যারে ধাঁধা (O(1) স্থান) C++?