C++でキャンディーを配布する
同じ長さの配列があるとします。ここでは、この配列のさまざまな数字がさまざまな種類のキャンディーを表します。これで、各番号は対応する種類のキャンディー1つを意味します。キャンディーの数を兄と妹に均等に分配する必要があります。妹が受け取ることができるキャンディーの最大数を見つける必要があります。
したがって、入力が[1,1,2,3]の場合、姉妹がキャンディー[2,3]を持ち、兄弟がキャンディー[1,1]を持っていると見なすかのように、出力は2になります。現在、姉妹には2種類のキャンディーがあり、兄弟には1種類のキャンディーしかありません。
これを解決するには、次の手順に従います-
-
1つのセットを定義する
-
初期化i:=0の場合、i <キャンディーのサイズの場合、更新(iを1増やします)、実行-
-
キャンディー[i]をsに挿入
-
-
最小サイズのsとキャンディーのサイズ/2を返す
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; class Solution { public: int distributeCandies(vector<int>& candies){ unordered_set<int> s; for (int i = 0; i < candies.size(); i++) s.insert(candies[i]); return min(s.size(), candies.size() / 2); } }; main(){ Solution ob; vector<int> v = {1,1,2,3}; cout << (ob.distributeCandies(v)); }
入力
{1,1,2,3}
出力
2
-
C++のn-aryツリーの偶数サイズのサブツリー
この問題では、n-aryツリーを示す隣接リストが与えられます。私たちのタスクは、n-aryツリー内の偶数サイズのサブツリーの数を見つけることです。 N-aryツリー は、通常、次のように階層的に表されるノードのコレクションとして定義されます。 ツリーはルートノードで開始されます。 ツリーの各ノードは、その子ノードへのポインタのリストを維持します。 子ノードの数がm以下です。 問題を理解するために例を見てみましょう 入力: 出力: 4 説明: 7をルートとするツリーのサイズは同じです。 2をルートとするツリーのサイズは同じです。 0をルートとする
-
Pythonでキャンディーを人々に配布する
次のように、いくつかのキャンディーをn人の列に配布したいとします- 次に、最初の人に1つのキャンディーを、2番目の人に2つのキャンディーを、というように、最後の人にn個のキャンディーを与えるまで続けます。 その後、再び列の最初に戻り、最初の人にn + 1個のキャンディー、2番目の人にn + 2個のキャンディーを与え、最後の人に2*n個のキャンディーを与えるまで続けます。 。 キャンディーがなくなるまで、このプロセスを繰り返します。最後の人は残りのキャンディーをすべて受け取ります(必ずしも前のギフトより1つ多いとは限りません)。 キャンディーの最終的な分布を表す配列を返す必要があります。