C++でK未満のサブアレイ製品
これを解決するには、次の手順に従います-
- temp:=1、j:=0およびans:=0
- 0から配列のサイズまでの範囲のiの場合
- temp:=temp * nums [i]
- temp>
=kおよびj<=iの場合、do
- temp:=temp / nums [j]
- jを1増やします
- ans:=ans +(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
-
C++でn以下のすべての階乗数を検索します
ここでは、n以下のすべての階乗数を出力する方法を説明します。数値Nは、正の数の階乗である場合、階乗数と呼ばれます。したがって、いくつかの階乗数は1、2、6、24、120です。 階乗数を印刷するために、階乗を直接見つける必要はありません。 i =1から始めて、階乗*iを出力します。最初は階乗は1です。理解を深めるためにコードを見てみましょう。 例 #include <iostream> using namespace std; void getFactorialNumbers(int n) { int fact = 1; int
-
C ++の製品配列パズル(O(1)スペース)?
ここでは、配列に関連する1つの興味深い問題を確認します。 n個の要素を持つ配列があります。 n個の要素の別の配列を作成する必要があります。ただし、2番目の配列のi番目の位置は、i番目の要素を除く最初の配列のすべての要素の積を保持します。そして、1つの制約は、この問題では除算演算子を使用できないことです。追加のスペースを使用せずに、この問題をインプレースで解決する必要があります。 除算、演算を使用できれば、すべての要素の積を取得し、最初の配列のi番目の要素を除算して、2番目の配列のi番目の場所に格納することで、この問題を簡単に解決できます。 ここでは、1つの一時変数、つまり左部分と右部分の積