サイズ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
-
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を返し
-
リストから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