PythonのKプレフィックス
数値numsと整数kのリストがあるとすると、nums [0] + nums [1] + ... +nums[i]≤kである可能性のある最大のiを見つける必要があります。有効なiが存在しない場合は、-1を返します。
したがって、入力がnums =[4、-7、5、2、6]、k =5の場合、出力は3になり、4 +(-7)+ 5+2を追加した場合のインデックスは3になります。 =4、これはk未満です。最後の要素を追加すると、k以上になるため、インデックスは3になります。
これを解決するには、次の手順に従います-
- 範囲1からnums-1のサイズのiの場合、do
- nums [i]:=nums [i] + nums [i-1]
- nums -1から-1の範囲サイズのiの場合、1ずつ減らします。
- nums [i] <=kの場合、
- 私を返す
- nums [i] <=kの場合、
- 戻り値-1
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, nums, k): for i in range(1,len(nums)): nums[i]+=nums[i-1] for i in range(len(nums)-1,-1,-1): if nums[i]<=k: return i return -1 ob = Solution() nums = [4, -7, 5, 2, 6] k = 5 print(ob.solve(nums, k))
入力
[4, -7, 5, 2, 6], 5
出力
3
-
Bisect-Pythonの配列二分アルゴリズム
長いリストに挿入するたびにソート操作を実行すると、プロセッサが消費する時間の点でコストがかかる場合があります。 bisectモジュールは、挿入後にリストが自動的にソートされたままになることを保証します。この目的のために、それは二分アルゴリズムを使用します。モジュールには次の機能があります: bisect_left() このメソッドは、ソートされた順序を維持するために、リスト内の特定の要素の挿入ポイントを見つけます。リストにすでに存在する場合、挿入ポイントは既存のエントリの前(左側)になります。戻り値は、list.insert()の最初のパラメーターとして使用できます。 bisect_ri
-
Pythonで数値を文字列にフォーマットする方法は?
Pythonでは、文字列のformat関数を使用して、浮動小数点数を固定幅にフォーマットできます。 例 nums = [0.555555555555, 1, 12.0542184, 5589.6654753] for x in nums: print("{:10.4f}".format(x)) 出力 これにより出力が得られます- 0.5556 1.0000 12.0542 5589.6655 例 同じ関数を使用して、整数をフォーマットすることもできます- nums = [5, 20, 500] for x in nums: &nbs