C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で1つの数値を含む最長の間隔


numsと呼ばれる個別の整数のリストがあるとします。最大間隔(両端を含む)[開始、終了]のサイズを見つけて、最大でnum個の数値が含まれるようにする必要があります。

したがって、入力がnums =[10、6、20]の場合、最大間隔は[11、100000]であり、これには20のみが含まれるため、出力は99990になります。

これを解決するには、次の手順に従います-

  • ret:=-inf

  • 終了:=100000

  • 前:=1

  • 配列番号を並べ替える

  • n:=numsのサイズ

  • 初期化i:=0の場合、i

    • i + 1

      • 高:=nums [i + 1]-1

    • それ以外の場合

      • 高:=終了

    • i --1> =0の場合、-

      • 低:=前へ+ 1

    • それ以外の場合

      • 低:=前へ

    • 前:=nums [i]

    • ret:=高値の最大値-低値+1およびret

  • retを返す

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(vector<int> &nums) {
      int ret = INT_MIN;
      int end = 100000;
      int prev = 1;
      sort(nums.begin(), nums.end());
      int n = nums.size();
      int low, high;
      for (int i = 0; i < nums.size(); i++) {
         if (i + 1 < n) {
            high = nums[i + 1] - 1;
         } else
         high = end;
         if (i - 1 >= 0) {
            low = prev + 1;
         } else
         low = prev;
         prev = nums[i];
         ret = max(high - low + 1, ret);
      }
      return ret;
   }
};
main() {
   Solution ob;
   vector<int> v = {10, 6, 20};
   cout << (ob.solve(v));
}

入力

{10, 6, 20}

出力

99990

  1. C++での質素な数

    この問題では、正の整数Nが与えられます。私たちのタスクは、与えられた数が質素な数であるかどうかをチェックするプログラムを作成することです。 不正な番号 −指定された数の素因数分解の桁数よりも厳密に桁数が多い数。 例 − 625、数625の素因数は5 4です。 。 625の桁数は3です。 5 4の桁数 は2です。 3は厳密に2より大きくなります。したがって、625は質素な数です。 最初のいくつかの質素な数は − 125、128、243、256、343、512、625など。 問題を理解するために例を見てみましょう Input: n = 128 Output: Frugal n

  2. C++五胞体数

    五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと