Pythonでターゲットよりも大きい最小の文字を見つける
ソートされた文字の文字のリストがあるとします。これには小文字のみが含まれています。ターゲット文字tがあります。リスト内で、指定されたターゲットよりも大きい最小の要素を見つける必要があります。
そして、文字も回ります。したがって、ターゲットがt ='z'で文字=['a'、'b']の場合、答えは'a'です。
したがって、入力が["c"、 "f"、 "j"]、t ='a'の場合、出力は'c'になります。
これを解決するには、次の手順に従います-
- l:=0
- r:=文字のサイズ-1
- l <=rの場合、do
- mid:=(l + r)/2整数として
- 文字[mid]>がターゲットの場合、
- r:=mid -1
- それ以外の場合、
- l:=mid + 1
- 文字を返す[文字のlmodサイズ]
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def nextGreatestLetter(self, letters, target): l = 0 r = len(letters) - 1 while l <= r: mid = (l + r)//2 if letters[mid] > target: r = mid -1 else: l = mid + 1 return letters[l % len(letters)] ob = Solution() print(ob.nextGreatestLetter(["c", "f", "j"], "a"))
入力
["c", "f", "j"], "a"
出力
c
-
Pythonでxより大きい最小の数を見つける方法は?
組み込み関数ceil()は、指定された数値よりも大きい最小の数値を返します >>> x=6.67 >>> import math >>> math.ceil(x) 7 >>> x=1.13 >>> math.ceil(x) 2 >>> x=5.78 >>> math.ceil(x) 6 >>> x=-5.78 >>> math.ceil(x) -5 -5は-5.78より大きいことに注意してください
-
Pythonを使用してLCMを見つける方法は?
2つ(またはそれ以上)の数値のLCM(最小公倍数)は、両方(またはすべて)で割り切れる最小の数値です。 最初に、2つの与えられた数の大きい方を見つけます。それから始めて、両方で割り切れる最初の数、つまりLCMを見つけようとします 例 x=12 y=20 if x > y: greater = x else: greater = y while(True): if((greater % x == 0) and (greater % y == 0