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

Pythonでビットを数える


負でない整数numがあるとします。 0≤i≤numの範囲の各数値iについて、対応する2進数の1の数を計算し、それらをリストとして返す必要があります。したがって、数が5の場合、数は[0、1、2、3、4、5]であり、これらの数の1の数は[0、1、1、2、1、2]

です。

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

  • res:=num+1個の0を保持する配列
  • オフセット:=0
  • 1からnum+1の範囲のiの場合
    • iおよびi– 1 =0の場合、res [i]:=1およびoffset:=0
    • それ以外の場合は、オフセットを1増やし、res [i]:=1 + res [offset]
  • return res
例(Python)

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

class Solution:
   def countBits(self, num):
      result = [0] * (num+1)
      offset = 0
      for i in range(1,num+1):
         if i & i-1 == 0:
            result[i] = 1
            offset = 0
         else:
            offset+=1
            result[i] = 1 + result[offset]
      return result
ob1 = Solution()
print(ob1.countBits(6))

入力

6

出力

[0, 1, 1, 2, 1, 2, 2]

  1. ソートをカウントするためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、カウントソートの概念を使用して配列をソートする必要があります。 ソートのカウントは、特定の範囲のキーを処理する手法です。これには、異なるキーと値を持つオブジェクトの数を数えることが含まれます。最後に、算術計算を行って各オブジェクトの位置を取得し、出力を表示します。 次に、以下の実装のソリューションを見てみましょう- 例 def countSort(arr):    # The output character array that will have sorte

  2. Pythonのissuperset()

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