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

C++の適切な年齢の友達


友達リクエストをする人がいるとしましょう。私たちは彼らの年齢を知っています、これらはages[i]に保存されています。つまり、これはi番目の人の年齢を示しています。これで、次の条件のいずれかが当てはまる場合、Aは人物B(B!=A)を友達リクエストしません-

  • 年齢[B]<=0.5*年齢[A]+7
  • 年齢[B]>年齢[A]
  • 年齢[B]>100&&年齢[A]<100

それ以外の場合、AはBを友達リクエストします。AがBをリクエストした場合、Bは必ずしもAをリクエストするとは限りません。また、人々は自分自身を友達リクエストしません。では、友達リクエストの総数を見つける必要がありますか?

年齢配列が[16,17,18]のような場合、リクエストは17-> 16、18-> 17になるため、結果は2になります。

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

  • サイズ1000の配列バケットを定義してから、年齢の配列要素の頻度をバケットに格納します。
  • 次に、バケット要素の累積合計を見つけてバケットに保存します
  • ret:=0
  • 0から年齢配列のサイズまでの範囲のiの場合– 1
    • x:=ages [i]、y:=(ages [i] / 2)+ 7
    • x> =yの場合、
      • ret:=バケット[x] –バケット[y]
      • バケツ[x]–バケツ[y]がゼロ以外の場合、retを1減らします
  • returnret。

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int numFriendRequests(vector<int>& ages) {
      vector <int> bucket(1000);
      for(int i = 0; i < ages.size(); i++){
         bucket[ages[i]]++;
      }
      for(int i = 1; i < 1000; i++)bucket[i] += bucket[i - 1];
      int ret = 0;
      for(int i = 0; i < ages.size(); i++){
         int x = ages[i];
         int y = ((ages[i]) / 2) + 7;
         if(x >= y){
            ret += (bucket[x] - bucket[y]);
            if((bucket[x] - bucket[y]))
            ret--;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v1 = {16, 17, 18};
   Solution ob;
   cout << (ob.numFriendRequests(v1));
}

入力

[16,17,18]

出力

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、が必要で