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

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の場合、
      • 私を返す
  • 戻り値-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

  1. Bisect-Pythonの配列二分アルゴリズム

    長いリストに挿入するたびにソート操作を実行すると、プロセッサが消費する時間の点でコストがかかる場合があります。 bisectモジュールは、挿入後にリストが自動的にソートされたままになることを保証します。この目的のために、それは二分アルゴリズムを使用します。モジュールには次の機能があります: bisect_left() このメソッドは、ソートされた順序を維持するために、リスト内の特定の要素の挿入ポイントを見つけます。リストにすでに存在する場合、挿入ポイントは既存のエントリの前(左側)になります。戻り値は、list.insert()の最初のパラメーターとして使用できます。 bisect_ri

  2. 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