-
指定されたインデックスを更新し、C++プログラムで範囲内のgcdを見つけるためのクエリ
この問題では、サイズNおよびQクエリの配列arr []が与えられます。これは、2つのタイプになります。私たちのタスクは、クエリを解決して特定のインデックスを更新し、範囲内のGCDを見つけるプログラムを作成することです。 クエリは- タイプ1 − {1、index、value}-指定されたインデックスの要素を値だけ増やします。 タイプ2 − {2、L、R}-インデックス範囲[L、R]の要素のGCDを見つけます。 問題の説明 − [L、R]の範囲にある要素のGCDを見つけて、値を返す必要があります。 問題を理解するために例を見てみましょう 入力 arr[] = {5, 1, 7, 3,
-
C++プログラムのツリーでの祖先と子孫の関係のクエリ
この問題では、それぞれ2つの値iとjで構成されるN個の頂点ツリーとQ個のクエリが与えられます。私たちのタスクは、ツリー内の祖先と子孫の関係のクエリを解決するプログラムを作成することです。 各クエリを解決するには、ノードiがツリー内のノードjの祖先であるかどうかを確認する必要があります。 問題を理解するために例を見てみましょう 入力 Q = 2, query[][] = {{3, 5}, {1, 6}} 出力 No Yes 説明 i = 3, j = 5: The node 3 is not the ancestor of node 5. Return NO. i = 1, j =
-
C++のリストnumsからトリプレットnums[i]<nums [k]<nums[j]を見つけるプログラム
numsという数のリストがあるとすると、i
-
C++の異なるリストから選択された要素間の最小の違いを見つけるためのプログラム
リストのリストがあるとすると、各リストから1つの値を選択し、選択した要素の最大数と最小数の差をとることによって形成できる最小の差を見つける必要があります。 したがって、入力がlists =[[30、50、90]、[85]、[35、70]]のような場合、出力は20になります。これは、90、85、70、および90-70 =20 これを解決するには、次の手順に従います- maxVal:=-inf ret:=inf 優先キューpqを定義する n:=リストのサイズ 初期化i:=0の場合、i
-
C++でk個のサブリストの最小最大合計を見つけるプログラム
numsと呼ばれる数値のリストと別の値kがあるとします。リストを空でないk個のサブリストに分割できます。 k個のサブリストの最小最大合計を見つける必要があります。 したがって、入力がnums =[2、4、3、5、12] k =2のような場合、リストを[2、4、3、5]と[のように分割できるため、出力は14になります。 12]。 これを解決するには、次の手順に従います- 関数ok()を定義します。これは、配列v、k、x、を取ります。 cnt:=0、sum:=0 vの各要素iについて- xの場合、- 合計:=i (cntを1増やします) それ以
-
C++での文字列の最小分割数の後に回文数をカウントするプログラム
小文字の文字列があるとすると、各文字列が回文になるようにできるだけ少ない文字列に分割してから、文字列の数を見つける必要があります。 したがって、入力がs =levelracecarのようである場合、2つのパリンドロームlevelとracecarがあるため、出力は2になります。 これを解決するには、次の手順に従います- n:=Aのサイズ サイズ(n + 1)の配列結果を定義する 結果[n]:=-1 =0の場合、更新(iを1つ減らす)、実行- result [i]:=n --i --1 初期化j:=iの場合、j
-
与えられた行列がC++で同じ値のk×kの2乗を持つkを見つけるプログラム
2d行列があるとすると、すべての要素に同じ値が含まれている最大のk×k部分行列を見つけてから、kの値を見つける必要があります。 したがって、入力が次のような場合 1 1 8 3 1 5 5 5 2 5 5 5 4 5 5 5 値5の3×3の正方行列があるため、出力は3になります。 これを解決するには、次の手順に従います- n:=行列の行数 m:=行列の列数 サイズ(n x m)の2D配列dpを1つ定義し、1で埋めます ret:=1 =0の場合、更新(iを1つ減らす)、実
-
C++で最小の構文解析ツリーを見つけるためのプログラム
文字列内のブレークポイントを表す一意のソートされた番号のリストがあるとします。これらのルールからツリーを作成したい- 値(a、b)を持つノードがあり、aとbはブレークポイントです。これは、ノードが文字列内のインデックス[a、b]にまたがることを意味します。 ルートノードはすべてのブレークポイントにまたがっています。 (文字列全体)。 ノードの左右の子のスパンは順序付けられ、連続しており、親ノードのスパンが含まれています。 ブレークポイントの「a」のリーフノードのインデックスは、ブレークポイントの「b」のインデックスの前に1です。 ツリーのコストは、ツリー内のすべて
-
C++で谷間で捕らえられる雨の量を見つけるためのプログラム
要素が地形の高さを表す2Dマトリックスがあるとします。雨が降り、谷のすべてのスペースがいっぱいになる状況を想像してみましょう。 谷間で降る雨の量を調べる必要があります。 したがって、入力が次のような場合 6 6 6 8 6 4 5 8 6 6 6 6 その場合、4〜5個の正方形の間に3単位の水を保持できるため、出力は3になります。 これを解決するには、次の手順に従います- x座標とy座標および高さhを含む構造データを定義します 優先度付きキューpqを定義し、高さの値で並べ替えられたデータ項目を格納します
-
C++で特定の文字列からk個の一意のサブシーケンスを見つけた後にコストを見つけるプログラム
文字列sと別の値kがあるとします。 k個の一意のサブシーケンスを取得できるように、sのいくつかのサブシーケンスを選択する必要があります。ここで、サブシーケンスを選択するコストは、(s)の長さ-(サブシーケンス)の長さに等しくなります。したがって、k個の一意のサブシーケンスを選択した後、可能な限り最小の総コストを見つける必要があります。このセットが見つからない場合は、-1を返します。空の文字列を有効なサブシーケンスと見なします。 したがって、入力がs =pqrs、k =4の場合、出力は3になります。 これを解決するには、次の手順に従います- n:=sのサイズ サイズ(n + 1)
-
C++で2点間の最短距離を見つけるプログラム
各要素が[x、y]の形式であり、ユークリッド座標を表す座標のリストがあるとします。最小の二乗距離(x 1 )を見つける必要があります -x 2 ) 2 +(y 1 -y 2 ) 2 提供された任意の2つの座標間。 したがって、入力が座標={{1、2}、{1、4}、{3、5}}のような場合、出力は4になります。 これを解決するには、次の手順に従います- 1つのマップを定義しますytorightmostx 配列座標を並べ替える ret:=無限大 座標の各pについて- it =(p [1] --sqrt(ret))がytorightmostxにある
-
C++のすべての奇数の長さのサブリストの中央値の合計を見つけるプログラム
numsという数値のリストがあるとすると、指定されたリストのすべての奇数長のサブリストの中央値の合計を見つける必要があります。 したがって、入力がnums =[2、4、6、3]のようである場合、奇数の長さのサブリストは− [2]、[4]、[6]、[3]であるため、出力は23になります。 [2、4、6]、[4、6、3]なので、中央値の合計は2 + 4 + 6 + 3 + 4 + 4 =23 これを解決するには、次の手順に従います- ret:=0 初期化i:=0の場合、i
-
C++で靴下のすべてのペアを一緒に配置するために必要なスワップの最小数を見つけるためのプログラム
行と呼ばれる番号のリストがあり、これが一列に並んでいる靴下を表しているとします。並べ替えはしていませんが、靴下の各ペアが(0、1)、(2、3)、(4、5)のように並んでいるように並べ替えます。それらを再配置するために必要なスワップの最小数を見つける必要があります。 したがって、入力がrow =[0、5、6、2、1、3、7、4]のような場合、行の順序は2であるため、出力は2になります。 [0、5、6、2、1、3、7、4] [0、1、6、2、5、3、7、4] [0、1、3、2、5、6、7、4] [0、1、3、2、5、4、7、6] これを解決するには、次の手順
-
C++で対戦相手を捕まえるために必要な最小ステップ数を見つけるためのプログラム
[u、v]の形式のツリーエッジのリストがあると仮定します。これは、uとvの間に無向エッジがあることを示します。また、xとyの2つの値があります。ノードxにいて、対戦相手がノードyにいる場合。最初のラウンドでは移動し、次のラウンドでは対戦相手が移動します。対戦相手は、ラウンドで移動しないことを選択できます。対戦相手を捕まえるのに必要な最小ラウンド数を見つける必要があります。 したがって、入力がedges =[[0、1]、[0、2]、[1、3]、[1、4]]、x =0、y =3のような場合、出力は3になります。最初と同じように、ノード0から1に移動します。その後、対戦相手は現在のノード3に留まり
-
Pythonの任意のセルですべての人に会うために必要な最小ステップ数を見つけるためのプログラム
これらの値が存在する2D行列があるとします。0は空のセルを表します。 1は壁を表します。 2は人を表します。これで、人は上、下、左、右の4つの方向のいずれかを歩くことができます。それ以外の場合は、1つの時間単位にとどまります。誰もが会って時間を返すのにかかる時間を最小限に抑えるように、歩きやすいセルを見つける必要があります。 2人が同じ空のセルを通り抜けることができ、2人の間には常に何らかの経路があると想定できることを覚えておく必要があります。 したがって、入力が次のような場合 2 0 1 0 1 0 0 2 2 0 2 0
-
Pythonで二分木の上面図を見つけるプログラム
二分木があるとすると、木の上面図を見つける必要があり、左から右に並べ替えられます。 したがって、入力が画像のような場合、出力は[3、5、8、6、9]になります。これは、3が2より上で、5が7より上であるため、表示されないためです。 これを解決するには、次の手順に従います- ビュー:=新しい空の地図 q:=両端キュー qの最後にペア(ルート、0)を挿入します start:=inf、end:=−inf qが空でない間、実行します (node、coord):=qの左側の要素、次にqの左側の要素を削除 start:=開始と調整の最小値 end:=e
-
構成の数を数えるプログラムは、C++でドミノとトロミノで領域を埋めるためにあります
ドミノとトロミノの2つの形があるとします。ドミノは2x1の形で、トロミノは「L」のような形です。以下のように回転させることができます- 数がnの場合、2xnのボードにこれらの2つのタイプの部品を充填するための構成の数を見つける必要があります。タイリングで知っているように、すべての正方形はタイルで覆われている必要があります。 したがって、入力が3の場合、出力は5になります。したがって、配置は[XYZ XXZ XYYXXYXYY]と[XYZYYZXZZ XYY XXY]になります。ここでは、タイルごとに異なる文字が使用されます。 これを解決するには、次の手順に従います- サイズN
-
C++のターゲットと同じ一意のサブシーケンスの数を見つけるプログラム
2つの小文字の文字列sとtがあるとすると、tに等しいsのサブシーケンスの数を見つける必要があります。答えが非常に大きい場合は、結果を10 ^ 9+7で返します。 したがって、入力がs =abbd t =bdのようである場合、2つの可能なサブシーケンス bdがあるため、出力は2になります。 s[1]連結s[3] s[2]はs[3]を連結します。 これを解決するには、次の手順に従います- m:=10 ^ 9 + 7 tのサイズが0と同じ場合、- 0を返す tがsと同じ場合、- 1を返す sのサイズの場合、- 0を返す
-
C++で文字列の一意のサブシーケンスの数をカウントするプログラム
文字列sがあるとすると、sの空でない一意のサブシーケンスの数を見つける必要があります。答えが非常に大きい場合は、結果を10 ^ 9+7で変更します。 したがって、入力がs =xxyの場合、出力は5になります。これは、 x、 xx、 xy、 y、およびxxyの5つのサブシーケンスがあるためです。 これを解決するには、次の手順に従います- m:=10 ^ 9 + 7 n:=sのサイズ サイズ26の配列テーブルを定義する res:=0 初期化i:=1の場合、i <=nの場合、更新(iを1増やします)、do- c:=s [i − 1] −aのASCII
-
C++でのパフォーマンスに基づいて従業員に支払われるべき最終的な金額を見つけるためのプログラム
パフォーマンスとコストと呼ばれる同じ長さの数値のリストが2つあるとします。また、別の数kもあります。これらは、各ワーカーiがパフォーマンス[i]レベルで実行し、少なくともコスト[i]がかかることを示しています。グループ内の他の従業員と比較して、従業員の業績に比例して支払われることも考慮して、k人の従業員を雇用するための最小コストを見つける必要があります。 したがって、入力がパフォーマンス=[5、3、2]コスト=[100、5、4] k =2のような場合、emp1とemp2を選択できるため、出力は10になります。少なくとも5+4=9の金額を支払う必要があります。ただし、emp1のパフォーマンスは