-
C++で配列から要素を削除することによって取得できる最大ポイントを見つけます
コンセプト N個の要素と2つの整数lおよびrを持つ特定の配列Aに関して、1≤a x ≤105 1≤l≤r≤N。配列の任意の要素(たとえばax)を選択して削除できます。また、a xに等しいすべての要素を削除することもできます。 + 1、a x +2…ax +Rおよびax -1、a x -2…ax -配列からのL。このステップには斧ポイントがかかります。私たちのタスクは、配列からすべての要素を削除した後、総コストを最大化することです。 入力 2 1 2 3 2 2 1 l = 1, r = 1 出力 8 ここでは、削除する2を選択します。次に、指定されたlとrの範囲に対して、
-
C++でi<j<kおよびa[i]<a [j]<a[k]などの配列内のトリプレットの最大合計を求めます
コンセプト サイズnの正の整数の特定の配列に関して、トリプレット(a i )の最大合計を決定するタスク + a j + a k )0 <=i
-
C ++のO(n)時間とO(1)空間でBSTの中央値を見つけます
コンセプト 与えられた二分探索木(BST)に関して、私たちのタスクはその中央値を決定することです。 いいえでも。ノードの数、中央値=((n / 2番目のノード+(n + 1)/ 2番目のノード)/ 2奇数のノードの場合、中央値=(n + 1)/2番目のノード。 与えられたBST(ノード数が奇数の場合)は- 7 / \ 4 9 / \ / \ 2 5 8  
-
C++の複数のスレッド間のメモリの競合を見つける
RAMがあり、RAMがブロックで編成されているとします。システム上で実行されている複数のプロセスがあります。すべてのプロセスが次の情報を取得することに注意する必要があります(スレッドT、メモリブロックM、時間t、R / W)これは、スレッドTが特定の時間tにメモリブロックMを実装しており、操作がread(R )またはwrite(W)。 次のケースは、メモリの競合であるかどうかを示しています- 同じ場所での複数の読み取り操作は、競合の理由ではありません。 書き込み操作がx+5からx-5の間でMの場所に対して実行されている場合、時間xで場所Mにアクセスするスレッドの競合を作成する責任
-
C++でのアレイの最小調整コストを見つける
コンセプト 正の整数の特定の配列に関して、配列内の隣接する要素間の差が特定のターゲット以下になるように、配列内の各要素を置き換えます。次に、調整コストを最小化するタスク、つまり、新しい値と古い値の差の合計。したがって、基本的にΣ| A [i] – A newを最小化する必要があります。 [i] |ここで、0≤i≤n-1、nはA[]およびA newのサイズとして示されます。 []は、隣接する差がターゲット以下の配列として示されます。配列のすべての要素が定数M=100よりも小さいとします。 入力 arr = [56, 78, 53, 62, 40, 7, 26, 61, 50, 48], ta
-
C++のフローネットワークで最小のs-tカットを見つける
次のフローネットワークがあるとします。ご存知のように、s-tカットは、ソースsノードとシンクtノードが異なるサブセットにある必要があるカットであり、ソースセットからシンク側に向かうエッジが含まれます。ここで、s-tカットの容量は、カットセット内の各エッジ容量の合計で表されます。ここでは、特定のネットワークの最小容量s-tカットを見つける必要があります。ここで期待される出力は、最小カットのすべてのエッジです。 したがって、入力が次のような場合 その場合、出力は[(1,3)、(4,3)、(4,5)]になります。 これを解決するには、次の手順に従います- ノード=6 関数bf
-
C++で指定された制約を使用してすべてのジョブを完了するための最小時間を見つける
コンセプト 異なる時間要件を持つ特定の一連のジョブに関して、利用可能なk個の同一の担当者が存在し、担当者が1ユニットのジョブを実行するために消費する時間も提供されます。私たちの仕事は、次の制約ですべての仕事を完了するための最小時間を決定することです。 最初の制約は、担当者には連続したジョブのみを割り当てることができるということです。 ここで、たとえば、担当者は、配列内の位置1と2でジョブを割り当てることができますが、位置3では割り当てることができません。 2番目の制約は、2人の譲受人がジョブを共有(または共同割り当て)できないことです。つまり、ジョブを1人の譲受人に部分的に割り
-
C++で連続番号のソートされた配列から欠落している要素を検索します
コンセプト n個の異なる整数の特定の配列array[]に関して、要素は1つの欠落した要素とともに昇順で順番に配置されます。私たちの仕事は、不足している要素を特定することです。 入力 array[] = {1, 2, 3, 4, 5, 6, 7, 9} 出力 8 入力 array[] = {-4, -2, -1, 0, 1, 2} 出力 -3 入力 array[] = {1, 2, 3, 4} 出力 -1 欠落している要素はありません。 メソッド 原則 不整合を探す:この原則によれば、要素とそのインデックスの違いは、すべての要素に対してarray[0]である必要があります。 例
-
C++で同じレベルの葉のデータの合計の乗算を見つけます
コンセプト 与えられた二分木に関して、次の値を返します。 すべてのレベルに関して、このレベルに葉がある場合は、すべての葉の合計を計算します。それ以外の場合は無視してください。 すべての合計の乗算を計算して返します。 入力 Root of following tree 3 / \ 8 6 \ 10 出力 80 最初のレ
-
C++でビット単位のOrがKに等しいN個の異なる数を検索します
コンセプト 与えられた2つの整数NとKに関して、私たちのタスクは、ビット単位のORがKに等しいN個の異なる整数を決定することです。可能な答えが存在しない場合は、-1を出力することがわかっています。 入力 N = 4, K = 6 出力 6 0 1 2 入力 N = 11, K = 6 出力 -1 解決策を見つけることはできません。 メソッド 数列のビット単位のORがKである場合、Kで0であるすべてのビットインデックスもすべての数でゼロでなければならないことを私たちは知っています。 この結果、ビットがKの1である場合に変更できる位置のみがあります。そのカウントをBit_Kとします
-
C++で文字列のn番目の辞書式順列を検索します
コンセプト 小文字のアルファベットのみを含む長さmの特定の文字列に関して、辞書式順序で文字列のn番目の順列を決定するタスク。 入力 str[] = "pqr", n = 3 出力 Result = "qpr" 説明 ソートされた順序で可能なすべての順列-pqr、prq、qpr、qrp、rpq、rqp 入力 str[] = "xyx", n = 2 出力 Result = "xyx" 説明 ソートされた順序で可能なすべての順列-xxy、xyx、yxx メソッド ここでは、この問題を解決するためにいくつかの
-
C++で特定の漸化式のn番目の項を検索します
コンセプト bnを数列と仮定します。これは、漸化式b 1で表されます。 =1およびbn + 1 / b n =2 n 。私たちのタスクは、log 2の値を決定することです。 (b n )特定のnに対して。 入力 6 出力 15 説明 log 2 (b n )=(n *(n --1))/ 2 =(6 *(6-1))/ 2 =15 入力 200 出力 19900 メソッド b n + 1 / b n =2 n b n / b n-1 =2 n-1 。 。 。 b 2 / b 1 =2 1 、達成するために上記のすべ
-
結果の2つのツリーのビットごとのORがC++で等しくなるように、ツリーで分割できるエッジの数を見つけます
コンセプト m個のノードとすべてのノードに関連付けられた数を持つ特定のツリーに関して、任意のツリーエッジを壊すことができ、その結果、2つの新しいツリーが形成されます。ここでは、この方法でエッジの数をカウントして、そのエッジを壊した後に構築された2つのツリーに存在するノードのビットごとのORが等しくなるようにする必要があります。すべてのノードの値が≤10^6であることに注意してください。 入力 values[]={1, 3, 1, 3} 1 / | \ 2 3 4 出力 2 ここでは、1と2の間のエッジを壊すこと
-
C ++のすべてのペアのgcd()から元の番号を検索します
コンセプト 別の配列の要素のすべての可能なペアのGCDを含む特定の配列array[]に関して、私たちのタスクは、GCD配列の計算に使用される元の数値を決定することです。 入力 array[] = {6, 1, 1, 13} 出力 13 6 gcd(13, 13) = 13 gcd(13, 6) = 1 gcd(6, 13) = 1 gcd(6, 6) = 6 入力 arr[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 8, 11, 13, 3, 3} 出力 13 11 8 6 6 メソッド 最初に、配列
-
C ++で余分なスペースなしで、ソートされた単一リンクで指定された合計のペアを検索します
単一リンクリストと値xがあるとします。合計がxと同じペアを見つける必要があります。余分なスペースを使用することはできず、予想される時間計算量はO(n)になることに注意する必要があります。 したがって、入力が4→7→8→9→10→11→12、x =19の場合、出力は[(7、12)、(8、11)、(9、10)] これを解決するには、次の手順に従います- 関数convert_to_xor()を定義します。これで開始されます prev:=NULL startがNULLの場合、-を実行します。 next_list_node:=次の開始 next of start:=n
-
C++で最大のビット差を持つバイナリ行列の行のペアを検索します
バイナリ行列があるとします。与えられた行列の中で、ビット差が最大の行のペアを見つける必要があります。 したがって、入力が行列のような場合、行2と行3のビット差が4であるため、出力は[2,3]になります。これは最大です。 これを解決するには、次の手順に従います- 値と2つの子を使用してTrie構造を定義します。 関数get_max_bit_diff()を定義します。これは、trie、matrix、n、row_index、のルートを取ります。 temp:=root、count:=0 初期化i:=0の場合、i
-
C++でソートされた二重リンクリストで特定の製品とのペアを検索します
コンセプト 正の異なる要素の特定のソートされた二重リンクリストに関して、私たちのタスクは、余分なスペースを消費することなく、積が特定の値xに等しい二重リンクリスト内のペアを決定することです。 入力 List = 1 <=> 2 <=> 4 <=> 5 <=> 6 <=> 8 <=> 9 x = 8 出力 (1, 8), (2, 4) 入力 List1 = 1 <=> 2 <=> 3 <=> 4 <=> 5 <=> 6 <=> 7 x = 6 出力 (
-
C++で2つの要素が隣接しないような最大合計
この問題では、配列arr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように最大合計を見つけるプログラムを作成することです。 問題の説明 配列内で合計シーケンスの2つの数値が隣接しないように、配列からシーケンスの最大合計を見つける必要があります。 問題を理解するために例を見てみましょう 入力 arr[] = {5, 1, 3, 7, 9, 2, 5} 出力 22 説明 Taking sum sequence from index 0 with alternate elements : 5 + 3 + 9 + 5 = 22 Taking sum sequence fr
-
2つの要素が隣接しないような最大合計-C++で2を設定します
この問題では、配列arr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように最大合計を見つけるプログラムを作成することです。 問題の説明 配列内で合計シーケンスの2つの数値が隣接しないように、配列からシーケンスの最大合計を見つける必要があります。 問題を理解するために例を見てみましょう 入力 arr[] = {5, 1, 3, 7, 9, 2, 5} 出力 22 説明 Taking sum sequence from index 0 with alternate elements : 5 + 3 + 9 + 5 = 22 Taking sum sequence fr
-
C++で指定されたマトリックスの任意のサブマトリックスで可能な最大トレース
この問題では、2次元配列arr[][]が与えられます。私たちのタスクは、C++で指定されたマトリックスの任意のサブマトリックスに対して可能な最大トレースを見つけるプログラムを作成することです。 問題の説明 サブマトリックスの最大トレースを見つける必要があります。トレースは、行列の主対角線の要素の合計です。 問題を理解するために例を見てみましょう 入力 arr[][] ={{-2, 5, 3}, {1, 6, 2}, {4, 3, 9}} 出力 15