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

Pythonで重複番号を見つける


n+1個の整数を含む配列numがあるとします。メンバーは1からnの範囲です。少なくとも1つの重複番号が存在する必要があることを証明します。重複する番号が1つしかない場合、その重複する要素を見つける必要があります。したがって、配列が[1,3,4,2,2]のような場合、重複する要素は2になります。

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

  • a:=nums [0]およびb:=nums [0]
  • True
    • a:=nums [nums [a]]
    • b:=nums [b]
    • a =bの場合、中断します
  • ptr:=nums [0]
  • ptrはb
      ではありません
    • ptr:=nums [ptr]
    • b:=nums [b]
  • return ptr

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

class Solution(object):
   def findDuplicate(self, nums):
      hare = nums[0]
      tortoise = nums[0]
      while True:
         hare = nums[nums[hare]]
         tortoise = nums[tortoise]
         if hare == tortoise:
            break
      ptr = nums[0]
      while ptr!=tortoise:
         ptr = nums[ptr]
         tortoise = nums[tortoise]
      return ptr
ob1 = Solution()
print(ob1.findDuplicate([3,1,3,4,2]))

入力

[3,1,3,4,2]

出力

3

  1. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal

  2. Python関数の引数の数を見つけるにはどうすればよいですか?

    次のようなスクリプトqux.pyがあるとします #qux.py def aMethod1(arg1, arg2):      pass def aMethod2(arg1,arg2, arg3, arg4, arg5):     pass このスクリプトの内容にアクセスできないと仮定すると、次のように、指定された関数の引数の数を見つけることができます Python関数内のパラメーター名のリストを見つけるには、inspectモジュールをインポートし、指定されたスクリプトqux.pyもインポートします。 inspect.getargspec(