-
Pythonで最も競争力のあるサブシーケンスを見つけるためのプログラム
配列numsと別の値kがあるとすると、サイズkのnumsの最も競合するサブシーケンスを見つける必要があります。ここで、サブシーケンスs1は、サブシーケンスs2(同じサイズ)よりも競争力があります。これは、s1とs2が異なる最初の位置で、サブシーケンスs1の数がs2の対応する数よりも少ない場合です。 したがって、入力がnums =[4,6,3,7] k =2のような場合、サイズ2のすべてのサブシーケンスの中で{[4,6]、[4、 3]、[4,7]、[6,3]、[6,7]、[3,7]}、[3,7]が最も競争力があります。 これを解決するには、次の手順に従います- 試行:=numsのサイズ-k
-
Pythonを使用して2つの文字列を分割して回文を作成するプログラム
長さが同じ2つの文字列aとbがあるとします。インデックスを選択し、その選択したインデックスで両方の文字列を分割して、aを2つの文字列に分割する必要があります。a_prefとa_suffここで、a =a_pref | a_suff、およびbを2つの文字列に分割します。b_pref| b_suff(|は連結演算子)ここで、b =b_pref+b_suff。 a_pref+b_suffまたはb_pref+a_suffが回文を形成するかどうかを確認します。 (分割は空の文字列である可能性があります) したがって、入力がa =pqrst b =turqpのような場合、[pq、 rst]のようなbと[t
-
Pythonで配列を補完するための最小限の動きを見つけるプログラム
別の値の制限である偶数の長さの配列numがあるとします。 1回の移動で、numsの任意の値を1からlimitまでの別の値に置き換えることができます。すべてのインデックスiについて、nums [i] + nums [n-1-i]が同じ数に等しい場合、配列は相補的であると言われます。したがって、numsを補完するために必要な最小移動数を見つける必要があります。 したがって、入力がnums =[1,4,2,3] limit =4のような場合、出力は1になります。これは、1回の移動でインデックス1から2の要素を作成できるため、配列は[1,2 、2,3]、次にnums [0] + nums [3] =
-
サブアレイをチェックするプログラムは、等差数列から再配置することも、Pythonで再配置することもできません。
数列numsがあり、サイズmの別の2つの配列lとrがあるとすると、これらのlとrは[l [i]、r[i]]のような範囲クエリを表します。ブールシーケンスansを見つける必要があります。ここで、サブ配列nums [l [i]]、nums [l [i] + 1]、... nums [r [i] -1]、 nums [r [i]]は、等差数列を生成するように調整できます。それ以外の場合はfalseです。 シーケンスが少なくとも2つの要素で構成されていて、2つの連続する要素ごとの差が同じである場合、シーケンスは算術であると言われます。たとえば、いくつかの等差数列は、[2、4、6、8、10]、[5、5
-
パルクールアーティストがPythonで到達できる最も遠い建物を見つけるためのプログラム
さまざまな高さの家がn個あり、パルクールの芸術家がレンガやはしごを使って家から家へと移動したいとします。家の高さは配列として私たちに与えられます。各レンガの高さは単位の長さであり、それらのいくつかが与えられます。はしごとレンガは1回しか使用できません。パルクールの芸術家が行くことができる最も遠い建物を見つける必要があります。 したがって、入力が高さ=[5、8、7、6、2、3、1、4]、ブリック=3、ラダー=2のような場合、出力は7になります。 アーティストは0を構築することから始めます。 彼は3つのレンガの助けを借りて1号館に到着します。 後継の建物は前の建物よりも短いため、彼は建物2
-
Pythonで価値の低い色のボールを販売して最大の利益を見つけるプログラム
Inventoryという配列があるとします。inventory[i]は、最初に持っていたi番目の色のボールの数を表します。また、注文と呼ばれる値があります。これは、顧客が必要とするボールの総数を表します。ボールは任意の順序で販売できます。私たちの在庫にはさまざまな色のボールがあり、顧客は任意の色のボールを望んでいます。現在、ボールの価値は本質的に特別です。各色のボールの値は、在庫にあるその色のボールの数です。したがって、現在6つの青いボールがある場合、顧客は最初の青いボールに6を支払うことになります。その場合、青いボールは5つしか残っていないので、次の青いボールは5と評価されます。色付きのボー
-
Pythonで文字列のバランスをとるための最小限の削除を見つけるプログラム
sとtの2文字だけの文字列sがあるとします。 sの任意の数の文字を削除して、文字列のバランスをとることができます。 i
-
Pythonで観覧車からの利益を最大化するために必要な最小回転を見つけるためのプログラム
4つのキャビンを備えた観覧車があり、各キャビンに4人の乗客を収容できるとします。ホイールは反時計回りに回転し、回転するたびに「実行」の金額がかかります。これで、n個のアイテムを含む配列「cust」ができました。各アイテムiは、i番目の回転の前に観覧車に入るのを待っている人の数を示します。ホイールに乗るには、各顧客が「ボード」の金額を支払う必要があり、その金額は、ホイールを反時計回りに1回転させるためのものです。キャビンに空席がある場合、列に並んで待っている人は待つべきではありません。したがって、データを前提として、利益を最大化するために必要なローテーションの最小量を見つける必要があります。
-
Pythonで家にたどり着くための最小限のジャンプを見つけるプログラム
forbiddenという配列があるとします。ここで、forbidden [i]は、バグがforbidden [i]の位置にジャンプできないことを示し、a、b、xの3つの値もあります。バグの家は数直線のxの位置にあります。最初は位置0にあります。ルールに従うことでジャンプできます- バグは正確に右の位置にジャンプする可能性があります。 バグは正確にb位置左にジャンプする可能性があります。 バグは2回続けて後方にジャンプすることはできません。 バグは、配列で指定された禁止位置にジャンプできません。 バグはホームを超えて前方にジャンプできますが、負の値で番号付けされた位
-
Pythonで家族の継承順序を見つけるプログラム
さまざまな世代のメンバーで構成される家族があるとします。家族のようなものには、父親、彼の子供、そして彼らの祖母がいます。しかし、出生と死は各家族で起こります。 家族の長男は頭と見なされます。したがって、「頭」のメンバーが死亡すると、その直接の後継者またはその子が頭になります。 3つの機能を実装します。最初の機能は、子供が家族に生まれるときに使用されます。この関数は、親の名前と子の名前を入力として受け取り、それらをレコードに追加します。 2番目の関数は、死亡した場合に使用されます。亡くなった家族の名前を入力として受け取り、レコードから削除します。 3番目の関数は、継承の順序を示します。現在
-
ポイントが存在せず、Pythonで最も広い2つのポイント間の垂直領域を見つけるプログラム
(x、y)としてn個の点が与えられたと仮定します。垂直領域は、y軸に沿って無限に拡張される領域です。他のポイントがエリア内になく、最も広いポイントがないように、2つのポイント間の垂直エリアを見つける必要があります。 したがって、入力がpts =[[10,9]、[11,11]、[9,6]、[11,9]]の場合、出力は1になります。 赤と青の領域が最適で、内部にポイントはありません。 これを解決するには、次の手順に従います- リストを並べ替えるpts 1からポイントのサイズまでの範囲のiの場合、実行します (pts [i、0] --pts [i-1、0])の最大値を返
-
Pythonで2つの文字列が近いかどうかを判断するプログラム
sとtの2つの文字列があるとすると、sとtが近いかどうかを確認する必要があります。次の操作を使用して一方を他方から達成できれば、2つの文字列は近いと言えます- 既存の2文字を交換します。 (abcdeからaecdbのように) bbcbaaのように(ここではすべてのaがbに変換され、その逆も同様です)) どちらの文字列でも、何度でも操作を使用できます。 xyyzzz)。 これを解決するには、次の手順に従います- sとtに一般的でない文字がある場合は、 Falseを返す a:=s内の文字のすべての頻度値のリスト b:=t内の文字のすべての頻度値のリ
-
Pythonでフロント、ミドル、バックからプッシュまたはポップできるキューを実装するプログラム
フロント、ミドル、バックで値をプッシュおよびポップできるキューを実装するように求められたとします。 3つのケースすべてに対して、プッシュとポップを行うための2つの関数を実装する必要があります。特定の時間にキュー全体を表示する別の関数を実装する必要があります。 したがって、入力が次のような場合 push_from_back(10) push_from_back(20) push_from_front(30) push_from_middle(40) push_from_front(50) show_queue() pop_from_back() show_queue() p
-
Pythonのグリッドボックスのどこにボールが着地するかを見つけるプログラム
m x nグリッドボックスが与えられたとします。各セルには、右上から左下、または左上から右下のいずれかに配置されたボードがあります。上のセルからボールがボックスに入れられ、そのボールがボックスの下部に到達するかどうかを確認する必要があります。グリッドはマトリックスとして与えられます。セルに1のマークが付いている場合、対角線上のボードは左上から右下に広がります。 -1とマークされている場合は、右上隅から左下隅にまたがっています。 n個のボールが箱に入れられた場合、底に到達するボールの数を調べる必要があります。 3x3グリッドボックスの例。 したがって、入力がmat =のような場合
-
Pythonで家を塗装するための最小コストを見つけるためのプログラム
サイズmの配列があり、小都市のmの家を表すとします。各家は、n色のいずれかで塗装する必要があります(色は1からnまでのラベルが付けられています)。また、一部の家はすでに塗装されているため、もう一度ペイントします。同じ色で着色されている家は近所と呼ばれます。配列housesがあり、houses [i]は家の色を表し、色の値が0の場合、家はまだ色付けされていないことを表します。コストと呼ばれる別の配列があります。これは2D配列で、costs [i、j]は家iを色j+1で着色するためのコストを表します。また、targetと呼ばれる別の入力値もあります。残りのすべての家を、正確に目標数の近隣が存在する
-
Pythonで家と最寄りのメールボックスの間の最小合計距離を見つけるプログラム
Housesという配列があり、別の値kがあるとします。ここで、houses [i]は、通りに沿ったi番目の家の場所を表します。通りにk個のメールボックスを割り当て、各家と最も近いメールボックスの間の最小合計距離を見つける必要があります。 したがって、入力がhouses =[6,7,9,16,22] k =2の場合、メールボックスを7と18に配置すると、各家からの最小合計距離は| 6になるため、出力は9になります。 -7 | + | 7-7 | + | 9-7 | + | 16- 18 | + | 22-18 | =1 + 0 + 2 + 2 + 4 =9 これを解決するには、次の手順に従
-
PythonでツリーノードのK番目の祖先を見つけるプログラム
0からn-1までの番号が付けられたn個のノードを持つツリーがあるとします。ツリーは親配列によって与えられます。ここで、parent[i]はノードiの親です。ツリーのルートはノード0です。特定のノードのk番目の祖先を見つける必要があります。祖先が存在しない場合は、-1を返します。 したがって、入力が次のような場合 ノード6の最初の祖先が5で、2番目の祖先が2であるため、出力は2になります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これは親、ノード、kを取ります ノードが-1と同じ場合、 -1を返す それ以外の場合、kが1と
-
Pythonのグラフでクリティカルエッジと疑似クリティカルエッジを見つけるプログラム
0からn-1までの番号が付けられたn個の頂点を含むグラフが与えられたとします。グラフは無向であり、各エッジには重みがあります。したがって、グラフが与えられた場合、グラフMSTのクリティカルエッジと疑似クリティカルエッジを見つける必要があります。エッジを削除するとMSTの重みが増加する場合、そのエッジはクリティカルエッジと呼ばれます。疑似クリティカルエッジは、すべてではなく、すべてのグラフMSTに表示できるエッジです。グラフを入力として与えられたエッジのインデックスを見つけます。 したがって、入力が次のような場合 頂点の数が5の場合、出力は[[]、[0、1、2、3、4]]になります。指
-
Pythonで好きな日に好きなキャンディーを食べられるかどうかをチェックするプログラム
正の計算candiesCountの配列があるとします。ここで、candiesCount [i]は、i番目のタイプのキャンディーの数を示します。また、querys [i]に3つのパラメーター[favoriteType_i、favoriteDay_i、dailyCap_i]があるquerysという別の配列もあります。いくつかのルールがあります: 0日目からキャンディーを食べ始めます。 以前のi-1タイプのキャンディーをすべて食べていない限り、タイプiのキャンディーを食べることはできません。 すべてを食べるまで、1日に少なくとも1つのキャンディーを食べる必要があります。 これ
-
Pythonのサブ配列の最大絶対和を見つけるプログラム
numsという配列があるとします。サブ配列[nums_l、nums_l + 1、...、nums_r-1、nums_r]の絶対和は| nums_l + nums_l + 1 + ... + nums_r-1 +nums_r|である必要があります。 numsのサブ配列の最大絶対合計を見つける必要があります(そのサブ配列は空である可能性があります)。 したがって、入力がnums =[2、-4、-3,2、-6]の場合、サブ配列[2、-4、-3,2]の絶対サブ配列の合計は最大であるため、出力は11になります。 2 +(-4)+(-3)+ 2 | =11. これを解決するには、次の手順に従います-