[Python] スタックでキューを作る
スタックとは、LIFO のADTで、データを挿入する push、一番最後に挿入したデータを取り出す pop というメソッドを持ちます。 キューとは、FIFO の ADT で、データを挿入する enqueue 、一番最初に挿入したデータを取り出す deq...
Freedom is a responsible choice.
スタックとは、LIFO のADTで、データを挿入する push、一番最後に挿入したデータを取り出す pop というメソッドを持ちます。 キューとは、FIFO の ADT で、データを挿入する enqueue 、一番最初に挿入したデータを取り出す deq...
Python で連結リストを逆順にします。 連結リストは以下の実装を使います。 単純に考えれば、空の連結リストを用意して値を先頭から挿入していくことで、逆順の連結リストを取得できます。 def reverse_linked_list(sel...
Python で、連結リストの中心にあるノードを探します。 連結リストは、以下の実装を使います。 単純に考えると、先頭からポインタをたどり最後まで一度移動して連結リストの長さを取得し、その後その半分の位置まで進めば、中心に辿り着きます。 d...
lightgbm の多クラス分類のパラメータチューニングで GridSearchCV を使うときに、multiclass_log_loss を scoring として使う方法です。 ググってもなかなか見つからなかったので、今後のためにメモしておきます。 Custom...
最大部分配列問題 数値で構成された配列内の部分配列の中で、総和が最大となるものを求めます。 Incomputer science, themaximum sum subarray problemis the task of finding a contig...
Python で与えられた文がアナグラムかどうか確認します。 アナグラム(anagram)とは、言葉遊びの一つで、単語または文の中の文字をいくつか入れ替えることによって、全く別の意味にさせる遊びである。 出典: フリー百科事典『ウィキペディア(Wikipedia...
正の整数の配列の中に、同じ整数があるかどうか探します。 ただし、整数の最大値は、配列のサイズより小さいものとします。 総当たり 総当たりで同じ整数があるか探します。 時間計算量は\( O(N^2) \) になります。 def find_du...
Python で正の整数を逆順にします。 文字列として扱うのではなく整数として扱うので、str のような形では行えません。 10による剰余が最下位の桁になり、商が最下位の桁を取り除いた数になるので、ループで商が0になるまで繰り返すことで、最下位の桁から順に取り出すこ...
Python で与えられた文が回文かどうかを確認します。 回文(かいぶん)とは、始めから(通常通り)読んだ場合と終わりから(通常と逆に)読んだ場合とで文字ないし音節の出現する順番が変わらず、なおかつ、言語としてある程度意味が通る文字列のことで、言葉遊びの一種である。英語で...
与えられた配列を逆順にする In-place アルゴリズムを Python で書いてみます。 通常は list.reverse() や list を使います。 考え方は簡単で、左右両端にインデックスを置いて入れ替え、その後一つ狭めてさらに左右両端を入れ替える…と...