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

Pythonで特定の範囲の要素を更新するプログラム


numsと呼ばれる数値のリストと演算のリストがあるとします。ここで、各操作には3つのフィールド[L、R、X]があります。これは、インデックスLからRまでのすべての要素をXずつインクリメントする必要があることを示しています。すべての操作を適用して、最終的なリストを返す必要があります。

したがって、入力がnums =[8、4、2、-9、4]のような場合操作=[[0、0、3]、[1、3、2]、[2、3、5]]、最初のリストは[8、4、2、-9、4]であったため、出力は[11、6、9、-2、4]になります。

  • 最初の操作[0、0、3]を実行すると、リストは[11、4、2、-9、4]になります。
  • 最初の操作[1、3、2]を実行すると、リストは[11、6、4、-7、4]になります。
  • 最初の操作[2、3、5]を実行すると、リストは[11、6、9、-2、4]になります。

これを解決するには、次の手順に従います-

  • イベント:=新しいリスト
  • 操作の(l、r、inc)ごとに、
      を実行します。
    • イベントの最後に(l、inc)を挿入
    • イベントの最後に(r + 1、-inc)を挿入します
  • リストイベントを並べ替える
  • inc:=0、ptr:=0
  • 0からnumsのサイズの範囲のiの場合は、
    • ptr <イベントとイベントのサイズ[ptr、0]はiと同じですが、
      • inc:=inc + events [ptr、1]
      • ptr:=ptr + 1
    • nums [i]:=nums [i] + inc
  • 数値を返す

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, nums, operations):
      events = []
      for l, r, inc in operations:
         events.append((l, inc))
         events.append((r + 1, -inc))
      events.sort()
      inc = 0
      ptr = 0
      for i in range(len(nums)):
         while ptr < len(events) and events[ptr][0] == i:
            inc += events[ptr][1]
            ptr += 1
         nums[i] += inc
      return nums
ob = Solution()
nums = [8, 4, 2, -9, 4]
operations = [ [0, 0, 3], [1, 3, 2], [2, 3, 5] ]
print(ob.solve(nums, operations))

入力

[1,2,3,4,5,6,7,8,9,10], 3

出力

[11, 6, 9, -2, 4]

  1. 与えられた範囲内の奇数因子を持つ要素の数のためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −範囲が与えられているので、範囲内の奇数因子の数を見つける必要があります。 アプローチ 私たち全員が知っているように、すべての完全な正方形には、範囲内に奇数の因子があります。そこで、ここでは完全な平方の数を計算します。 mとnは両方とも包括的であるため、nが完全な正方形である場合のエラーを回避するために、式でn-1を使用します。 次に、以下の実装を見てみましょう- 例 # count function def count(n, m):    return int(m**0.5) -

  2. 指定された整数配列のすべての個別の要素を出力するPythonプログラム。

    与えられた整数配列。配列の要素が重複している可能性があります。私たちのタスクは、個別の値を表示することです。 例 Input::A=[1,2,3,4,2,3,5,6] Output [1,2,3,4,5,6] アルゴリズム Step 1: input Array element. Step 2: Then pick all the elements one by one. Step 3: then check if the picked element is already displayed or not. Step 4: use one flag variable which i