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

Pythonで番号がありません


0からnまでの数字のリストがあるとします。欠落している番号が1つあります。効率的なアプローチで不足している番号を見つける必要があります。したがって、A =[0、1、2、3、4、5、7、8、9]の場合、欠落している数は6です。

これを解決するために、二分探索アプローチを使用します。

  • リストを昇順で並べ替える
  • 高=Aの長さ、低=0
  • 低い<高い間、実行する
    • 中=低+(高–低)/ 2
    • if A [mid]> mid
      • 高=中
    • それ以外の場合
      • 低=中+1
  • 低く戻す

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

class Solution(object):
   def missingNumber(self, nums):
      """
      :type nums: List[int]
      :rtype: int
      """
      nums.sort()
      high = len(nums)
      low = 0
      while low<high:
         mid = low + (high-low)//2
         if nums[mid]>mid:
            high = mid
         else:
            low = mid+1
      return low
ob1 = Solution()
print(ob1.missingNumber([5,3,1,7,8,0,9,2,4]))

入力

nums = [5,3,1,7,8,0,9,2,4]

出力

6

  1. Pythonで整数を逆にする

    32ビットの符号付き整数が1つあるとします。数字を取り、数字を逆にする必要があります。したがって、数値が425のような場合、出力は524になります。数値が符号付きであることに注意する必要があるもう1つの点は、負の数が存在する可能性があることです。したがって、番号が–425の場合、–524になります。 ここにいくつかの仮定があります。 32ビット符号付き整数のドメインで使用していると仮定しました。したがって、範囲は[-232〜232 –1]になります。したがって、数値が範囲内にない場合、関数は0を返します。 これを解決するために、Pythonコードを使用します。まず、指定された整数を文字列に

  2. Pythonのfactorial()

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