-
Pythonで範囲合計をサポートするデータ構造を定義するプログラム
整数のリストで構築できるデータ構造を開発したいとします。効率的な方法で必要なときはいつでも、インデックスiからインデックスj-1までの要素の合計を見つける関数があります。 2つの機能があります。 整数配列を使用して新しいインスタンスを構築するコンストラクター。 get_sum(i、j)は、開始インデックスiと終了インデックスj-1からの配列要素の整数の合計を返します。 したがって、入力がarray =[5,2,3,6,4,7,8,9,3,2]のような場合は、オブジェクトobjを作成し、関数obj.get_sum(1,5)およびobjを呼び出します。 get_sum(4,8)の場合、出力
-
Pythonでのユーザーのレート制限チェックをサポートするデータ構造を定義するプログラム
有効期限で構築でき、ユーザーIDとタイムスタンプを受け取る関数をサポートするデータ構造を開発するとします。これにより、指定されたタイムスタンプで指定されたuser_idを持つユーザーが、要求が失敗するかどうかがチェックされます。ユーザーが指定された有効期限より前にリクエストが成功した場合にのみ失敗します。 したがって、入力がexpire =6のような場合は、オブジェクトobjを作成し、関数obj.limit(0,10)、obj.limit(0,16)、obj.limit(0,17)、およびobj.limit( 1,20)の場合、出力はそれぞれFalse、False、True、Falseになり
-
Pythonで連続する同一ビットを削除する操作をカウントするプログラム
バイナリ文字列sがあるとします。次に、ビットを選択してその値を0から1に、またはその逆に反転する操作を考えてみましょう。 3つの同一の連続ビットがない文字列を取得するために必要な操作の最小数を見つける必要があります。 したがって、入力がs =10011100の場合、出力は1になります。これは、インデックス4のビットを1から0に反転して、文字列10010100に3つの連続する同一ビットがないようにすることができるためです。 これを解決するには、次の手順に従います- l:=0、カウント:=0 l
-
文字列をチェックするプログラムは、Pythonで相互に回転しているかどうか
2つの英語の文字列sとtがあるとします。これらは、小文字または大文字、あるいはその両方にすることができます。一方が他方の回転であるかどうかを確認する必要があります。 したがって、入力がs =koLKAta t =KAtakoLの場合、出力はTrueになります これを解決するには、次の手順に従います- sのサイズがtのサイズと同じでない場合、 Falseを返す s:=s連結s tがsに存在する場合はTrueを返し、それ以外の場合はFalseを返します 例 理解を深めるために、次の実装を見てみましょう- def solve(s, t): if len(
-
Pythonでランレングス文字列デコードイテレータクラスを実装するプログラム
ランレングスでエンコードされた小文字の文字列sを使用して構築するイテレータクラスを定義するとします。このイテレータには、次の2つの関数があります- next()これにより、イテレータ内の次の要素が検索されます hasnext()これは、次の要素が存在するかどうかをチェックします したがって、入力がs =2b1aのような場合、sを使用してオブジェクトを作成し、next()、hasnext()、next()、next()、hasnext()を呼び出すと、出力はbになります。 、True、 b、 a、False。 これを解決するには、次の手順に従います- コンストラクターを定義します。
-
Pythonで全員が席に着くことができるかどうかをチェックするプログラム
番号nがあり、座席を検索している人がn人いるとすると、ビットのリストもあります。ここで、1はすでに占有されている座席を表し、0は空いている座席を表します。 2人が隣同士に座ることはできないので、n人全員が席を見つけることができるかどうかを確認する必要があります。 したがって、入力がn =2シート=[1、0、0、0、1、0、0]の場合、インデックス2と6にシートできるため、出力はTrueになります。 これを解決するには、次の手順に従います- 座席の先頭に0を挿入し、座席の末尾に[0、1]を挿入します res:=0、gap:=0 座席のiごとに、 iが0と同じ場合、 ギャップ:=ギャッ
-
Pythonでライブラリセットクラスを使用せずにセットデータ構造を定義するプログラム
次のメソッドを使用してセットデータ構造を実装するとします- セットの新しいインスタンスを構築するコンストラクター add(val)を使用して、整数valをセットに挿入します presents(val)は、valがセットに含まれているかどうかを確認します remove(val)を使用して、セットからvalを削除します したがって、集合sを作成する場合は、s.add(10)、s.add(20)、s.add(10)、s.exists(10)、s.remove(10)、s.exists( 10)、s.exists(20)の場合、出力は次のようになります s.add(10)の場合、10が
-
Pythonで最初のn個の自然数を持つ配列を増加または減少させる右回転フォームをチェックするプログラム
numsと呼ばれる数値のリストがあり、n個の要素が存在するとします。 [1、2、...、n]や[n、n-1、...、1]のように、シフトによって最初のn個の自然数を増加または減少させてリストを作成できるかどうかを確認する必要があります。右に何回でも数字が表示されます。 したがって、入力がnums =[5,6,1,2,3,4]のような場合、出力はTrueになります。これは、それらを4回シフトして、配列[1,2,3,4、 5,6] これを解決するには、次の手順に従います- n:=numsのサイズ 1からn-1の範囲のiの場合、do if | nums [i --1] --nums [
-
Pythonで同じ頻度の最大頻度要素を持つ最短サブリストの長さを見つけるプログラム
numsという番号のリストがあるとします。 numsで最も頻繁な数の頻度がkである場合。最も頻度の高いアイテムの頻度もkになるように、最短のサブリストの長さを見つける必要があります。 したがって、入力がnums =[10、20、30、40、30、10]の場合、出力は3になります。これは、ここで最も頻度の高い数値が10と30であり、ここでk=2であるためです。サブリスト[30、40、30]これは、30が存在し、その頻度も2である最短のサブリストです。 これを解決するには、次の手順に従います- L:=numsのサイズ rnums:=numsの逆 d:=numsで存在する各要素の頻度を含
-
Pythonで隣接する2桁が同じでない最小数を形成するプログラム
4つの可能な文字「1」、「2」、「3」、および「?」を含む文字列sがあるとします。 「?」の代わりに「1」、「2」、「3」のいずれかを配置できます。隣接する2桁が同じにならないように、可能な限り最小の数を見つける必要があります。 したがって、入力がs =2 ?? 3?の場合、出力は21231になります。 これを解決するには、次の手順に従います- i:=0 s:=sの要素のリスト サイズがs<2の場合、 s [i]が「?」と同じ場合、 「1」を返す i
-
Pythonで距離が連続していない最小のペアの合計を見つけるプログラム
と呼ばれる番号のリストがあるとします。ここで、i1であるインデックス(i、j)の任意のペアを考えてみましょう。次に、最小のペアの合計を見つけます。 1制約に違反しています。 これを解決するには、次の手順に従います- n:=numsのサイズ min_seen:=nums [0] ans:=inf 2〜n-1の範囲のiの場合、do ans:=最小のansおよび(min_seen + nums [i]) min_seen:=min_seenとnumsの最小値[i-1] 回答を返す 例 理解を深めるために、次の実装を見てみましょう- def solve(nums): &n
-
Pythonのバイナリ表現で1カウントに基づいて数値をソートするプログラム
nums単位の数値のリストがあるとします。各番号のバイナリ表現に存在する1の数で、リストを昇順で並べ替える必要があります。 2つの数値の1の数が同じである場合は、それらの値に基づいて配置します。 したがって、入力がnums =[4、1、12、7、6]のような場合、-であるため、出力は[1、4、6、12、7]になります。 4のバイナリ形式は0100です 1のバイナリ形式は0001です 6のバイナリ形式は0110です 12のバイナリ形式は1100です 7のバイナリ形式は0111です したがって、配置は[1、4、6、12、7]であり、値が小さいため1が最初になり、同じ理由で6が最初になります
-
Pythonでソートされた順序で二乗要素リストを見つけるプログラム
numsと呼ばれる数値のリストがあり、要素が昇順で並べ替えられているとすると、要素を2乗して、並べ替えられた順序で結果を返す必要があります。 したがって、入力がnums =[-8、-3、0、5、6]のような場合、出力は[0、9、25、36、64]になります。 これを解決するには、次の手順に従います- n:=numsのサイズ l:=0 r:=n-1 インデックス:=n-1 res:=numsと同じサイズのリストで、0で埋めます =0の場合、実行 | nums [r] |、次に res [index]:=nums [l] * nums [l] l:=l + 1 そ
-
Pythonでリストが交互に増加しているかどうかを確認するプログラム
numsという番号のリストがあるとします。リストが厳密に増加することから始まり、厳密に減少すること、そして厳密に増加することなどを交互に繰り返すかどうかを確認する必要があります。また、リストが厳密に増加しているだけの場合は、有効になります。 したがって、入力がnums =[2、4、8、7、5、1、5、7、2、1]のようである場合、[2,4,8]が増加しているため、出力はTrueになります。 [7,5,1]が減少し、次に[5,7]が増加し、[2,1]が減少しています。 これを解決するには、次の手順に従います- nums [1] <=nums [0]の場合、 Falseを返す 0から
-
入力された文字列をチェックするプログラムは、Pythonではなくスタックしたキーボードキーでターゲット文字列を書き込むためのものです
2つの文字列sとtがあるとします。 tを作成したいのですが、キーボードに問題があり、一部の文字がスタックしているため、1回以上書き込まれる可能性があります。型付けされたsがtを書くことを意図していた可能性があるかどうかを確認する必要があります。 したがって、入力がs =appppleee t =appleの場合、出力はTrueになります。 これを解決するには、次の手順に従います- i:=0、j:=0 s_len:=sのサイズ t_len:=tのサイズ t_last:=空白の文字列 j
-
Pythonで最初のN個の奇数の合計を見つけるプログラム
数nがあるとすると、最初のn個の正の奇数の整数の合計を見つける必要があります。 したがって、入力がn =10の場合、最初の10個の奇数の整数は[1、3、5、7、9、11、13、15、17、19]であり、その合計は100であるため、出力は100になります。 100。 これを解決するには、次の手順に従います- 最初のn個の奇数の場合、合計は常にnの2乗です。 結果を得るには、n*nを返します 例 理解を深めるために、次の実装を見てみましょう- def solve(n): return n*n n = 10 print(solve(n)) 入力 10 出力 100
-
ペアの合計をチェックするデータ構造を作成するプログラムはPythonの値と同じです
2つのメソッドを持つデータ構造を作成するとします- add(val)これにより、値valがデータ構造に追加されます find(val)これは、合計がvalである要素が2つあるかどうかをチェックします その場で結果を得ることができるように、これを設計する必要があります。クエリが来るたびに番号を検索することはありません。 したがって、入力がオブジェクトobjを作成し、いくつかの数値6、14、3、8、11、15を追加するようなものである場合は、obj.find(9)、obj.find(11)、obj.find(15)、 9は6+3で形成でき、11は3 + 8で形成できるため、出力はTru
-
Pythonのターゲットよりも小さい2つの数値の合計を見つけるプログラム
numsと呼ばれる数値のリストがあり、ターゲット値もあるとすると、合計が最大(target-1)であるnumsの数値の最大ペアの合計を見つける必要があります。 したがって、入力がnums =[8、3、4、9、2] target =8の場合、8未満の数値の最大ペアの合計は4 + 3 =7であるため、出力は7になります。 これを解決するには、次の手順に従います- リスト番号を並べ替える p1:=0 p2:=numsのサイズ-1 m:=-inf p1
-
2つの数値の合計をチェックするプログラムは、Pythonでソートされたリストから最大kであるかどうか
numsという番号のリストがあり、numsの要素が昇順でソートされているとします。別の値kもあります。リストから取得した2つの要素の合計がkになるかどうかを確認する必要があります。数値は負または0にすることもできます。一定量のスペース使用量でこの問題を解決する必要があります。 したがって、入力がnums =[-8、-3、2、7、9] k =4のような場合、出力はTrueになります。これは、7と-3をとると、合計が7 +(- 3)=4、これはkと同じです。 これを解決するには、次の手順に従います- i:=0 j:=numsのサイズ-1 i
-
2つの文字列をチェックするプログラムは、Pythonで文字を交換するかどうかによって等しくなる可能性があります
2つの小文字の文字列sとtがあり、それらは同じ長さであるとします。 sから1つの文字を選択し、tから別の文字を選択して入れ替えることができます。この操作は何度でも実行できます。最後に、2つの文字列を同じにすることが可能かどうかを確認する必要があります。 したがって、入力がs =abcd t =cdabの場合、出力はTrueになります これを解決するには、次の手順に従います- fre:=sとtの連結文字列に存在する各要素の頻度を含むリスト freのすべての値のリストにある各cntについて、 cnt mod 2が1の場合、 Falseを返す Trueを返す 例 理解を深める