Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでの細胞融合


セルと呼ばれる番号のリストがあるとします。このリストは、さまざまなセルのサイズを表しています。ここで、各反復で、2つの最大のセルaとbが次のルールに従って相互作用します。したがって、a =bの場合、両方とも死にます。それ以外の場合、2つのセルはマージされ、それらのサイズは((a + b)/ 3)のフロアになります。最後のセルのサイズを見つけるか、セルが残っていない場合は-1を返す必要があります。

したがって、入力が[20,40,40,30]の場合、出力は16になり、最初の反復では40と40が停止し、20と30が((20 + 30)/ 3)のフロアになります。 =50/3のフロア=16

これを解決するには、次の手順に従います-

  • セル:=セル配列の各値を負に変換

  • セルでヒープを作成する

  • セルが空でないときに、-

    を実行します
    • セルから2つの要素を削除し、それらを再度負に変換して、1番目と2番目に連続して割り当てます

  • 最初が2番目と等しくない場合、-

    • (first + second)/ 3)のフロアの負の数をヒープに挿入します

  • セルにいくつかの要素がある場合はcells[0]の負の値を返し、それ以外の場合は-1

理解を深めるために、次の実装を見てみましょう-

from heapq import heapify, heappop, heappush
class Solution:
   def solve(self, cells):
      cells=[-x for x in cells]
      heapify(cells)
      while len(cells)>1:
         first,second = -heappop(cells), -heappop(cells)
         if first!=second:
            heappush(cells, -((first+second)//3))
      return -cells[0] if cells else -1
ob = Solution()
cells = [20,40,40,30]
print(ob.solve(cells))

入力

[20,40,40,30]

出力

16

  1. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',

  2. MicrosoftExcelでセルを分割する3つの方法

    Excelの1つのセルに複数のデータがある場合があります。これは、Excelスプレッドシートを結合しようとしたり、データをインポートしたりするときによく発生します。単に処理するのではなく、MicrosoftExcelでセルを分割することができます。ただし、プロセスは単純に分割オプションを使用するほど簡単ではありません。また、同じ結果を達成するためのいくつかの異なる方法があります。 列へのテキストの使用 公式のMicrosoftの方法では、TexttoColumnsを使用してMicrosoftExcelのセルを分割します。このメソッドは、分割するセルのすぐ右側のセルにあるテキストを上書きしま