-
Pythonで1行の可能な位置の数を見つけるプログラム
数n、pおよびqがあるとします。ここで、n人の列に並んでいると仮定します。自分がどのポジションにいるのかはわかりませんが、前に少なくともp人、後ろに最大q人いることはわかっています。可能なポジションの数を見つける必要があります。 したがって、入力がn =10、p =3、q =4の場合、出力は5になります。これは、10人がいて、少なくとも3人が前にいて、最大で4人が後ろにいるためです。したがって、インデックス[0、1、2、3、4]に立つことができます。たとえば、インデックス0では、9人が前に、0人が後ろにいます。 解決策は簡単です。q+1とn-pの最小値を返します 理解を深めるために、次の
-
Pythonで一度株式市場で購入することで得られる最大の利益を見つけるためのプログラム
会社の株価を時系列で表す価格のリストがあるとすると、その株を1回だけ売買することで得られる最大の利益を見つける必要があります。販売する前に購入する必要があることを覚えておく必要があります。 したがって、入力が価格=[10、12、9、6、8、12]の場合、出力は6になります。これは、6で購入し、12で販売できるためです。 これを解決するには、次の手順に従います- max_profit:=0 min_stock:=無限大 価格の各価格について、 max_profit:=max_profitの最大値と(price --min_stock) min_stock:=min_stockと価
-
与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム
無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります
-
Pythonで株式市場で複数回購入することで得られる最大の利益を見つけるためのプログラム
会社の株価を時系列で表す価格のリストがあるとすると、その株を何度でも売買することで得られる最大の利益を見つける必要があります。販売する前に購入する必要があることを覚えておく必要があります。 したがって、入力が価格=[10、50、30、40、60]の場合、出力は70になります。これは、10で購入、50で販売、30で購入、60で販売できるためです。 これを解決するには、次の手順に従います- prev_price:=無限大 利益:=0 価格の各pについて、 prev_priceの場合、 利益:=利益+ p --prev_price prev_price:=p 利益を返す
-
Pythonで単語のリストによってターゲットを綴ることができるかどうかをチェックするプログラム
numsと呼ばれる数のリストと別の数kがあるとします。インデックスkと任意のインデックスiから開始する場合、正確にnums[i]ステップ数だけ左または右に進むことができます。リストの最後に到達できるかどうかを確認する必要があります。 したがって、入力がnums =[0、0、2、1、3、3、1、1] k =2の場合、インデックス2から開始してから、インデックス4にジャンプするかのように、出力はTrueになります。次に、最後のインデックス7にジャンプします。 これを解決するために、次の手順に従います- n:=numsのサイズ 訪問:=サイズnのリストで0を入力 tovisit
-
Pythonで指定された文字を使用して作成できる最長の長さを見つけるプログラム
単語と呼ばれる文字列と文字と呼ばれる別の文字列のリストがあるとすると、文字の文字から形成できる単語の最長の文字列の長さを見つける必要があります。単語を形成できない場合は、0を返します。ここでは文字を再利用できません。 したがって、入力がwords =[dog、 cat、 rat、 bunny、 lion、 bat]、letters =gabctnyuの場合、出力は3になります。 「猫」または「バット」という単語を作成できるため、最大長は3です。 これを解決するには、次の手順に従います- ref:=文字とその頻度を含む地図 max:=0 単語内の各単語について、 w:=単語の文字と
-
Pythonで行列上にZ字型を形成する要素の合計を見つけるプログラム
1つのnxn行列Mがあるとすると、行列内でZ形状を形成するすべての要素の合計を見つける必要があります。 したがって、入力が次のような場合 4 3 2 9 1 8 2 5 6 要素が[4+3 + 2 + 1 + 2 + 5 + 6] =23であるため、出力は23になります。 これを解決するには、次の手順に従います- n:=行列の行数 n <=2の場合、 行列内のすべての要素の合計を返す first_row:=最初の行の合計 last_row:=最後の行の合計 対角=1からn-2までのすべてのiの行列[i、n-1-i]の合
-
Pythonの容量内でさまざまなアイテムを取得することで取得できる最大量を見つけるためのプログラム
同じ長さの重みと値と呼ばれる2つのリストと、容量kと呼ばれる別の数があるとします。ここで、weights[i]とvalues[i]は、i番目のアイテムの重みと値を示しています。これで、最大でk個の容量の重みを取得でき、各アイテムの最大で1つのコピーしか取得できないため、取得できる値の最大量を見つける必要があります。 したがって、入力が重み=[2、3、4]、値=[2、6、4]、容量=6のような場合、出力は8になります これを解決するには、次の手順に従います- n:=おもりのサイズ dp:=サイズ容量x nの行列で、0で埋めます 0からnの範囲のiについては、 0から容量までの範囲の
-
2つのバイナリ文字列を追加し、C++でバイナリ文字列としても返すプログラム
2つの2進文字列aとbがあるとすると、これらの2進数を加算し、それらの合計を文字列として見つける必要があります。 したがって、入力がa =10110、b =10010の場合、出力は101000になります。 これを解決するには、次の手順に従います- ret:=空の文字列 na:=aのサイズ、nb:=bのサイズ i:=na-1、j:=nb-1 キャリー:=0 =0)、do: =0の場合、a [i]-ASCIIは「0」、それ以外の場合は0) =0の場合、b [j]-「0」のASCII、それ以外の場合は0) sum:=addA + addB+キャリー キャリー:=合計/ 2
-
Pythonのすべての停留所を通過するには、バスの最小数を見つけるプログラムが必要です
numsという番号のリストがあり、バス停が路線上にあることを示しているとします。ここで、nums[i]はバスが駅iに到着する必要がある時間を示しています。バスは前進することしかできないので、すべての停留所を通過するために必要なバスの最小数を見つける必要があります。 したがって、入力がnums =[1、2、7、9、3、4]の場合、1つのバスが[1、2、3、4]を停止し、別のバスが[1、2、3、4]を停止できるため、出力は2になります。 7、9]。 これを解決するために、次の手順に従います- ans:=0 見られる:=長さがnumsと同じで、最初はfalseで埋められたリスト
-
Pythonで階段を上る方法をいくつ見つけるかをプログラムする
n段の階段があり、一度に1段または2段の階段を上ることができるとします。階段を上るユニークな方法の数を返す関数を定義する必要があります。 ステップの順序は変更しないでください。そのため、ステップの異なる順序はそれぞれ1つの方法としてカウントされます。答えが非常に大きい場合は、結果を10 ^ 9+7で変更します したがって、入力がn =5のような場合、8つの固有の方法があるため、出力は8になります- 1、1、1、1、1 2、1、1、1 1、2、1、1 1、1、2、1 1、1、1、2 1、2、2 2、1、2 2、2、1 これを解決するには、次の手順に従いま
-
Pythonで階段を上る方法(最大k回までの最大ステップ数)を見つけるためのプログラム
n段の階段があり、別の番号kもあるとします。最初は階段0にあり、一度に1、2、または3段の階段を上ることができます。しかし、私たちはせいぜいk回しか3つの階段を上ることができません。次に、階段を上る方法をいくつか見つける必要があります。 したがって、入力がn =5、k =2の場合、階段を上るにはさまざまな方法があるため、出力は13になります- [1、1、1、1、1] [2、1、1、1] [1、2、1、1] [1、1、2、1] [1、1、1、2] [1、2、2] [2、1、2] [2、2、1] [1、1、3] [1、3、1] [3、1、1] [2
-
Pythonでkから開始して、リストの最後に到達できることを確認するプログラム
numsと呼ばれる数のリストと別の数kがあるとします。インデックスkと任意のインデックスiから開始する場合、正確にnums[i]ステップ数だけ左または右に進むことができます。リストの最後に到達できるかどうかを確認する必要があります。 したがって、入力がnums =[0、0、2、1、3、3、1、1] k =2の場合、インデックス2から開始してから、インデックス4にジャンプするかのように、出力はTrueになります。次に、最後のインデックス7にジャンプします。 これを解決するために、次の手順に従います- n:=numsのサイズ 訪問:=サイズnのリストで0を入力 tovisit
-
Pythonのすべての隣接するサブリストの合計を見つけるプログラム
numsと呼ばれる数値のリストがあると仮定し、ここですべての隣接するサブ配列を検討します。これらのサブ配列のそれぞれを合計し、これらすべての値の合計を返します。最後に、結果を10 ** 9+7で変更します。 したがって、入力がnums =[3、4、6]のような場合、次のサブ配列があるため、出力は43になります-[3] [4] [6] [3、4] [4、6] [3、4、6]これらすべての合計は43です。 これを解決するには、次の手順に従います- N:=numsのサイズ ans:=0 0からnumsのサイズの範囲のiの場合は、 n:=nums [i] ans:=ans +(i
-
各パーティションがPythonでアナグラムを形成するように2つの文字列をパーティション化するプログラム
同じ長さの2つの空でない文字列sとtがあるとします。 sとtの部分文字列の各ペアが同じサイズであり、それらが互いにアナグラムになるように、それらを部分文字列に分割する必要があります。ここで、sとtのカット数が最大になるようなカットインデックスを見つけます。結果が見つからない場合は、空のリストを返します。 したがって、入力がs =bowcattiger t =owbactietgrの場合、出力は[0、3、5、6、10]になります。これは、各文字列がお互いのアナグラム。 s =[bow、 ca、 t、 tige、 r]、t =[owb、 ac、 t、 ietg、 r] これを解決するには、次
-
Pythonで昇順で表示できるようにカードを配置するプログラム
カードのリストがあり、昇順で表示されるようにカードを並べ替えたいとします。ご存知のように、カードは次のように公開されます。1.一番上のカードが削除されて公開され、次のカードが後ろに移動します。 2.カードがなくなるまで、手順1を繰り返します。カードが昇順で表示されるように、カードの順序を見つける必要があります。 したがって、入力がcards =[1、2、3、4、5、6、7、8]の場合、出力は[1、5、2、7、3、6、4、8]になります。 1が削除され、5が後ろに移動すると、現在の状況[2、7、3、6、4、8、5]。 2が削除され、7が後ろに移動され、現在の状況[3、6、4、8、5、7] 3が
-
Pythonで単一リンクリストの中間ノードを見つけるプログラム
単一リンクリストノードがあるとすると、中間ノードの値を見つける必要があります。そして、2つの中間ノードがある場合、2番目のノードを返します。これをシングルパスで解決する必要があります。 したがって、入力が[5,9,6,4,8,2,1,4,5,2]の場合、出力は2になります。 これを解決するために、次の手順に従います- p:=ノード d:=0、l:=0 ノードがnullでない場合は、実行してください dが2と同じでない場合、 node:=ノードの次 l:=l + 1、d:=d + 1 それ以外の場合 p:=pの次、d:=0
-
Pythonで右側の円形の大きい要素を見つけるプログラム
numsという番号のリストがあるとします。同じ長さの新しいリストを見つける必要があります。インデックスiの値は、右側のnums [i]より大きい次の要素に割り当てられ、必要に応じてリストの先頭に戻ります。これより大きい数値がない場合は、-1に設定する必要があります。 したがって、入力が[4、5、1、3]の場合、出力は[5、-1、3、4]になります。 これを解決するために、次の手順に従います- n:=aのサイズ stack:=スタック、最初に0を挿入、res:=サイズnのリスト、-1で埋める 0と1の範囲の値ごとに、実行 0からn-1の範囲のiの場合、実行 スタ
-
Pythonでバイナリツリーの任意のパスの最大合計を見つけるプログラム
二分木があるとすると、ルートノードからリーフノードに向かうパスの最大の合計を見つける必要があります。 したがって、入力が次のような場合 その場合、出力はルートからのように29になります。パス5-<9- <7- <8をたどると、加算後は29になります。 これを解決するために、次の手順に従います- 関数walk()を定義します。これはノードを取ります、s ノードがnullの場合、 max_sum:=max_sumとsの最大値 戻る s:=s+ノードのデータ ウォーク(ノードの左側、s) ウォーク(ノードの右側、s) 主な方法から次の
-
Pythonで収集できるコインの最大数を見つけるためのプログラム
各セルにいくつかのコインが格納されている2Dマトリックスがあるとします。 [0,0]から始めて、右または下にしか移動できない場合、右下隅で収集できるコインの最大数を見つける必要があります。 したがって、入力が次のような場合 1 4 2 2 0 0 0 5 [1、4、2、2、5] のパスをたどると、出力は14になります。 これを解決するために、次の手順に従います- 範囲1からAの行数までのrについては、次のようにします A [r、0]:=A [r、0] + A [r-1、0] 範囲1からAの列数までのcにつ