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

Pythonの等差数列から削除された用語を見つけるプログラム


n-1個の等差数列項を保持するnumsという配列があるとします。 numsの最初または最後の要素を除く1つの要素が以前に削除されました。削除された番号を見つける必要があります。

したがって、入力がnums =[5、7、11、13]の場合、項目は式2i + 5に従うため、出力は9になります。したがって、i=2の場合は2*2+5になります。 =9がありません。

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

  • numsのサイズが2と同じ場合、

    • (numsに存在するすべての要素の合計)/2のリターンフロア

  • nums[0]がnums[1]と同じ場合、/ p>

    • nums [0]

      を返します
  • 下:=nums [0]

  • アッパー:=numsの最後の要素

  • 間隔:=フロア(上-下)/数字のサイズ

  • ポインタ:=nums/2のサイズのフロア

  • 左:=0

  • 右:=numsのサイズ-1

  • 左は右と同じではありませんが、実行してください

    • nums[pointer]がnums[0]+インターバル*ポインターと同じでない場合、

      • nums[pointer-1]がnums[0]+ interval *(pointer-1)と同じである場合、

        • nums[0]+間隔*ポインタを返す

      • それ以外の場合

        • 右:=ポインタ

        • ポインタ:=床(左+右)/ 2

    • それ以外の場合

      • 右-左が1と同じ場合、

        • ポインタ:=右

      • それ以外の場合

        • 左:=ポインタ

        • ポインタ:=フロア(左+右)/ 2

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

def solve(nums):
   if len(nums) == 2:
      return sum(nums) // 2

   if nums[0] == nums[1]:
      return nums[0]

   lower = nums[0]
   upper = nums[-1]
   interval = (upper - lower) // len(nums)

   pointer = len(nums) // 2

   left = 0
   right = len(nums) - 1

   while left != right:
      if nums[pointer] != nums[0] + interval * pointer:
         if nums[pointer - 1] == nums[0] + interval * (pointer -1):
            return nums[0] + interval * pointer
         else:
            right = pointer
            pointer = (left + right) // 2
      else:
         if right - left == 1:
            pointer = right
         else:
            left = pointer
            pointer = (left + right) // 2

nums = [5, 7, 11, 13]
print(solve(nums))

入力

[5, 7, 11, 13]

出力

9

  1. Pythonの数のリストから等差数列の数を見つけるプログラム?

    numsと呼ばれる数のリストがあるとすると、長さが3以上の連続する等差数列の数を見つける必要があります。等差数列は、ある数と次の数の差が同じである数のリストです。 したがって、入力がnums =[6、8、10、12、13、14]のような場合、次のような等差数列があるため、出力は4になります。[6、8、10] [8、10 12] [6、8、10、12] [12、13、14] これを解決するには、次の手順に従います- count:=0、ans:=0 2からnumsのサイズの範囲のiの場合、実行します nums[i]-nums[i-1]がnums[i-1]-nums[i-

  2. リストからN個の最大の要素を見つけるPythonプログラム

    整数リストが与えられた場合、私たちのタスクはリスト内で最大のN個の要素を見つけることです。 例 Input : [40, 5, 10, 20, 9] N = 2 Output: [40, 20] アルゴリズム Step1: Input an integer list and the number of largest number. Step2: First traverse the list up to N times. Step3: Each traverse find the largest value and store it in a new list. 例 def Nnumbere