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