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

Pythonの単一番号II


空でない整数の配列があるとすると、1つだけを除いて、すべての要素が3回表示されます。単一の要素を見つける必要があります。したがって、配列が[2,2,3,2]の場合、出力は3になります。

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

  • 配列から要素の絶対値を取得して最大数を見つけ、それをmax_numに格納します

  • max_bits:=(log max_num base 2)+2の整数

  • list1:=サイズがmax_bitsで、要素が0の空のリスト

  • numsの各numに対して-

    • pos:=0

    • numが0ではなく、pos

      • 奇数がない場合は、list1[pos]を1増やします

      • n:=n/2そしてposを1増やします

  • 0からmax_bitsの範囲のiの場合

    • list1 [i]:=list1 [i] mod 3

  • pos:=0、res:=0

  • 範囲max_bitsのiの場合

    • list1 [i]が0でない場合、result:=result + 2 ^ pos

    • pos:=pos + 1

  • list1 [max_bits --1]が1の場合、res:=-(2 ^ max_bits --res)

  • 解像度を返す

例(Python)

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

import math
class Solution(object):
   def singleNumber(self, nums):
      max_num = max(map(abs, nums))
      max_bits = (int)(math.log(max_num,2)) + 2
      list1 = [0 for i in range(max_bits)]
      for no in nums:
         pos = 0
         while (no != 0 and pos < max_bits):
            if (no & 1 != 0):
               list1[pos] += 1
            no >>= 1
            pos += 1
      for i in range(max_bits):
         list1[i] %= 3
      pos = 0
      result = 0
      for i in range(max_bits):
         if (list1[i] != 0):
            result += (2 ** pos)
         pos += 1
      print (list1, max_bits)
      if (list1[max_bits - 1] == 1):
         result = -(2 ** max_bits - result)
      return (result)
ob = Solution()
print(ob.singleNumber([2,2,3,2]))

入力

[2,2,3,2]

出力

[1, 1, 0] 3
3

  1. Pythonのfactorial()

    数値の階乗を見つけることは、Pythonを含むデータ分析やその他の数学的分析で頻繁に必要とされます。階乗は、1から指定された数までのすべての整数を乗算することにより、常に正の整数に対して検出されます。以下に示すように、これを見つけるには3つのアプローチがあります。 Forループの使用 forループを使用して、指定された数まで1番を繰り返し、各ステップで乗算を続けることができます。以下のプログラムでは、ループで使用する前に、数値を入力して入力を整数に変換するようにユーザーに求めています。このようにして、計算で正の整数を確実に取得します。 例 n = input("Enter a nu

  2. Pythonの乱数

    説明 Pythonには、乱数を生成するための関数がほとんどありません。これらは、生成するために乱数が必要な多くのゲームや宝くじなどで使用できます。 乱数を生成する関数がいくつかあります- choice() この関数を使用して、数値のコレクションから1つの乱数を生成できます。 例 print (A random number from list : ,end=) print (random.choice([1, 4, 6, 100, 31])) 出力 A random number from list : 100 randrange(beg、end、step) この関数は