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

3C++では小さい


numsと呼ばれるn個の整数の配列があり、ターゲットもあるとすると、ここでインデックストリプレット(i、j、k)の数を見つける必要があります。ここでi、j、kはすべて0からn-1の範囲にあります。条件nums[i]+ nums [j] + nums[k]<ターゲットを満たします。

したがって、入力がnums =[-2,0,1,3]で、target =2の場合、合計が2未満のトリプレットが2つあるため、出力は2になります。[-2,0、 1]および[-2,0,3]。

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

  • ret:=0

  • 配列を並べ替える

  • n:=a

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

    • 左:=i + 1、右:=n-1

    • 左<右、実行-

      • 合計:=a [i] +a[左]+a[右]

      • 合計

        • ret:=ret+右-左

        • (左に1つ増やします)

      • それ以外の場合

        • (右に1つ減らす)

  • retを返す

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int threeSumSmaller(vector<int<& a, int t) {
      int ret = 0;
      sort(a.begin(), a.end());
      int n = a.size();
      for (int i = 0; i < n - 2; i++) {
         int left = i + 1;
         int right = n - 1;
         while (left < right) {
            int sum = a[i] + a[left] + a[right];
            if (sum < t) {
               ret += right - left;
               left++;
            }
            else
               right--;
         }
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<int< v = {-2,0,1,3};
   cout << (ob.threeSumSmaller(v,2));
}

入力

[-2,0,1,3] 2

出力

2

  1. C++でプロセスを強制終了します

    n個のプロセスがあるとします。ここでは、各プロセスにPIDまたはプロセスIDと呼ばれる一意のIDがあり、そのPPID(親プロセスID)もそこにあります。 各プロセスには1つの親プロセスしかありませんが、1つ以上の子プロセスがある場合があります。 これは木の構造のようなものです。 PPID =0のプロセスは1つだけです。これは、このプロセスに親プロセスがないことを意味します。すべてのPIDは一意の正の整数になります。 プロセスのリストを表すために2つの整数のリストを使用します。最初のリストには、各プロセスのPIDが含まれ、2番目のリストには対応するPPIDが含まれます。したがって、2つのリ

  2. C++でのリスのシミュレーション

    木、リス、そしていくつかのナッツがあります。位置は、2Dグリッドのセルで表されます。あなたの目標は、リスがすべてのナッツを集めて、それらを1つずつ木の下に置くための最小距離を見つけることです。リスは一度に最大で1つのナットしかとることができず、隣接するセルに向かって上下左右の4つの方向に移動できます。距離は移動回数で表されます。 したがって、入力が高さ:5幅:7木の位置:[2,2]リス:[4,4]ナッツ:[[3,0]、[2,5]]の場合、出力は12になります。 、 これを解決するには、次の手順に従います- 関数calc()を定義します。これには、x1、y1、x2、y2、が必要で