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

サイズkPythonの1からnまでのk番目の辞書式順序を見つけるプログラム


2つの値nとkがあるとします。ここで、1からn [1、2、...、n]の範囲の数値のリストを検討し、このリストのすべての順列を辞書式順序で生成します。たとえば、n =4の場合、[1234、1243、1324、1342、1423、1432、2134、2143、2314、2341、2413、2431、3124、3142、3214、3241、3412、3421、4123、4132、 4213、4231、4312、4321]。この順列シーケンスのk番目の値を文字列として見つける必要があります。

したがって、入力がn =4 k =5の場合、出力は「1432」になります

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

  • 関数factors()を定義します。これにはnumがかかります

  • quo:=num

  • res:=両端キューで、先頭に0を挿入

  • i:=2

  • 現状は空ではありませんが、実行してください

    • quo:=(quo / i)の商、rem:=quo mod i

    • resの左側にremを挿入します

    • i:=i + 1

  • 解像度を返す

  • メインの方法から、次のようにします-

  • 数値:=1からnまでの値のリスト

  • res:=空白の文字列

  • k_fact:=factor(k)

  • k_factのサイズ<数値のサイズ、実行

    • res:=resは、数値の最初の要素を文字列として連結してから、数値の最初の要素を削除します

  • k_factのインデックスごとに、実行

    • number:=数値のインデックス番目の要素、次にその要素を削除する

    • res:=res連結番号

  • 解像度を返す

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

from collections import deque
def factors(num):
   quo = num
   res = deque([0])
   i = 2
   while quo:
      quo, rem = divmod(quo, i)
      res.appendleft(rem)
      i += 1
   return res
class Solution:
   def solve(self, n, k):
      numbers = [num for num in range(1, n + 1)]
      res = ""
      k_fact = factors(k)
      while len(k_fact) < len(numbers):
         res += str(numbers.pop(0))
      for index in k_fact:
         number = numbers.pop(index)
         res += str(number)
      return res
ob = Solution()
n = 4
k = 5
print(ob.solve(n, k))

入力

4, 5

出力

1432

  1. Pythonの要素のリストからk番目の欠落している数を見つけるプログラム

    numsと整数kと呼ばれるソートされた一意の番号のリストがあるとすると、指定されたリストの最初の要素からk番目の欠落している番号を見つける必要があります。 したがって、入力がnums =[5,6,8,10,11]、k =1の場合、9は2番目(インデックス1)の欠落している数値であるため、出力は9になります。 これを解決するには、次の手順に従います- 1からnumsのサイズの範囲のiの場合、実行します diff:=nums [i]-nums [i-1]-1 =diffの場合、 k:=k-差分 それ以外の場合 nums [i-1] + k + 1を返し

  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