Pythonで最小のグッドベース
整数nがあるとすると、n基数kのすべての桁が1の場合、k> =2をnの基数と呼びます。したがって、数値nが文字列として指定された場合、nの最小の基数を次のように返す必要があります。ストリング。したがって、数値が121の場合、基数3の121は11111であるため、答えは3になります。
これを解決するには、次の手順に従います-
- getSum()というメソッドを定義します。これにはxと長さが必要です
- mainSum:=0およびtemp:=1を設定します
- 0から長さ– 1 −
- の範囲のiの場合
- mainSum:=mainSum + temp、temp:=temp * x
- mainSumを返す
- check()というメソッドを定義します。これにはnと長さが必要です-
- 低:=1、高:=n
- 高い間>=低い-
- 中:=低+(高–低)/ 2
- mainSum:=getSum(mid、length)
- mainSum =nの場合、midを返します
- それ以外の場合、mainSum> nの場合、high:=mid – 1
- それ以外の場合は低:=中+ 1
- 戻り値-1
- メインの方法から次のようにします-
- n:=指定された数
- 64から0までの範囲のiの場合
- x:=check(n、i)
- x> =2の場合、xを文字列として返します
- 文字列としてn–1を返します
理解を深めるために、次の実装を見てみましょう-
例
class Solution(object): def getSum(self, x, length): mainSum = 0 temp = 1 for i in range(length): mainSum += temp temp *= x return mainSum def check(self, n, length): low = 1 high = n while high >= low: mid = low + (high - low) // 2 mainSum = self.getSum(mid, length) if mainSum == n: return mid elif mainSum > n: high = mid - 1 else: low = mid + 1 return -1 def smallestGoodBase(self, n): n = int(n) for i in range(64, 0, - 1): x = self.check(n, i) if x >= 2: return str(x) return str(n - 1) ob = Solution() print(ob.smallestGoodBase("121"))
入力
“121”
出力
3
-
PythonのBSTでK番目に小さい要素
二分探索木があるとします。そのBSTでK番目に小さい要素を見つける必要があります。したがって、ツリーが次のような場合- したがって、3番目に小さい要素を見つけたい場合、k =3であり、結果は7になります。 これを解決するには、次の手順に従います- ノードと呼ばれる空のリストを1つ作成します solve(root、nodes)を呼び出す return k –ノードの1番目の要素 solveメソッドが作成されます。これはルートとノードの配列を取得します。これは次のように機能します- rootがnullの場合は、戻ります solve(ルートの左側、ノード) ルートの値をノード配列に追
-
2D配列でk番目に小さい要素を見つけるPythonプログラム
1つのn×nユーザー入力整数行列が与えられ、kの値。私たちのタスクは、2D配列でk番目に小さい要素を見つけることです。ここでは、Pythonでheapq mudule.Heapキュー(またはheapq)を使用します。 Pythonでは、「heapq」モジュールを使用して利用できます。 Pythonでのこのモジュールの手法は、最小のヒープ要素がポップされるたびに(min heap).nsmallest()メソッドを使用して、データフレームまたはシリーズからn個の最小値を取得します。 例 Input Array is:: 10 20 20 40 15 45 40 30 32 33 30 50