C++でのミーティングスケジューラ
2人のスロット1とスロット2の可用性タイムスロットリストと会議期間dがあるとすると、両方で機能し、期間dの最も早いタイムスロットを見つける必要があります。要件を満たす共通のタイムスロットがない場合は、空の配列を表示します。ここで、タイムスロットの形式は、開始から終了までの包括的な時間範囲を表す2つの要素[start、end]の配列です。同じ人の2つの可用性スロットが互いに交差していないと想定できます。つまり、同じ人物の任意の2つのタイムスロット[s1、e1]および[s2、e2]に対して、s1>e2またはs2>eのいずれかです。したがって、入力がs1 =[[10,50]、[60,120]、[140,210]]、s2 =[[0,15]、[60,70]]、期間=8の場合、出力は[ 60,68]。
これを解決するには、次の手順に従います-
- i:=0およびj:=0、1つの配列ansを作成し、s1およびs2を並べ替えます。
- whilei
- end:=s1 [i、1]とs2 [j、1]の最小値
- start:=s1 [i、0]とs2 [j、0]の最小値
- 終了–開始> =期間の場合、
- startと(start + duration)をans配列に挿入し、ansを返します。
- それ以外の場合、s1 [i、1]
- それ以外の場合は、jを1増やします
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } using namespace std; bool cmp(vector <int> a, vector <int> b){ return a[0]<b[0]; } class Solution { public: vector<int> minAvailableDuration(vector<vector<int>>& slots1, vector<vector<int>>& slots2, int duration) { int i =0; int j = 0; vector <int> ans; sort(slots1.begin(),slots1.end(),cmp); sort(slots2.begin(),slots2.end(),cmp); while(i<slots1.size() && j<slots2.size()){ int end = min(slots1[i][1],slots2[j][1]); int start = max(slots1[i][0],slots2[j][0]); if(end-start>=duration){ ans.push_back(start); ans.push_back(start+duration); return ans; } else if(slots1[i][1]<slots2[j][1]) { i++; } else { j++;} } return ans; } }; main(){ vector<vector<int>> v = {{10,50},{60,120},{140,210}}; vector<vector<int>> v1 = {{0,15},{60,70}}; Solution ob; print_vector(ob.minAvailableDuration(v, v1, 8)); }
入力
[[10,50],[60,120],[140,210]] [[0,15],[60,70]] 8
出力
[60, 68, ]
-
C++でプロセスを強制終了します
n個のプロセスがあるとします。ここでは、各プロセスにPIDまたはプロセスIDと呼ばれる一意のIDがあり、そのPPID(親プロセスID)もそこにあります。 各プロセスには1つの親プロセスしかありませんが、1つ以上の子プロセスがある場合があります。 これは木の構造のようなものです。 PPID =0のプロセスは1つだけです。これは、このプロセスに親プロセスがないことを意味します。すべてのPIDは一意の正の整数になります。 プロセスのリストを表すために2つの整数のリストを使用します。最初のリストには、各プロセスのPIDが含まれ、2番目のリストには対応するPPIDが含まれます。したがって、2つのリ
-
C++でのリスのシミュレーション
木、リス、そしていくつかのナッツがあります。位置は、2Dグリッドのセルで表されます。あなたの目標は、リスがすべてのナッツを集めて、それらを1つずつ木の下に置くための最小距離を見つけることです。リスは一度に最大で1つのナットしかとることができず、隣接するセルに向かって上下左右の4つの方向に移動できます。距離は移動回数で表されます。 したがって、入力が高さ:5幅:7木の位置:[2,2]リス:[4,4]ナッツ:[[3,0]、[2,5]]の場合、出力は12になります。 、 これを解決するには、次の手順に従います- 関数calc()を定義します。これには、x1、y1、x2、y2、が必要で