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

Pythonを使用して、合計がターゲットに等しい重複しないサブ配列の最大数を見つけるプログラム


配列numsとtargetという別の値があるとします。次に、それぞれの異なるサブアレイの値の合計がターゲットと同じになるように、空ではなく重複しないサブアレイの最大数を見つける必要があります。

したがって、入力がnums =[3,2,4,5,2,1,5] target =6のような場合、2つのサブ配列[2,4]と[1,5]があるため、出力は2になります。その合計は6と同じです。

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

  • t:=単一要素0の新しいセット

  • temp:=0

  • ans:=0

  • numsの各iについて、実行します

    • temp:=temp + i

    • prev:=temp-ターゲット

    • prevがtの場合、

      • ans:=ans + 1

      • t:=単一要素tempの新しいセット

    • それ以外の場合

      • 温度をtに挿入

  • ansを返す

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

def solve(nums, target):
   t = set([0])
   temp = 0
   ans=0
   for i in nums:
      temp += i
      prev = temp-target
      if prev in t:
         ans += 1
         t = set([temp])
      else:
         t.add(temp)
   return ans
nums = [3,2,4,5,2,1,5]
target = 6
print(solve(nums, target))

入力

"poput","vwput",9

出力

2

  1. Pythonを使用して、同じラベルを持つサブツリー内のノードの数を見つけるプログラム

    ノードに0からn-1までの番号が付けられたn個のノードを持つルート化された一般ツリーがあるとします。各ノードには、小文字の英字のラベルがあります。ラベルはlabels配列の入力として指定されます。ここで、lables[i]にはi番目のノードのラベルが含まれています。ツリーはエッジリストで表され、各エッジeには[u、v]があり、uは親、vは子を表します。サイズnの配列Aを見つける必要があります。これは、iと同じラベルを持つi番目のノードのサブツリー内のノードの数を表します したがって、入力が次のような場合 ここで、n =5およびlabel=“ ccaca” ルートには同じラベルの子

  2. Pythonを使用して最大の確率でパスを見つけるプログラム

    n個のノード(ノードには0から番号が付けられます)を持つ無向加重グラフがあるとします。このグラフは、エッジリストを使用して入力として与えられ、各エッジeについて、そのエッジ確率[e]を通過する成功の確率があります。開始ノードと終了ノードもあります。最初から最後まで成功の確率が最大のパスを見つけて、成功の確率を返す必要があります。パスが見つからない場合は、0を返します。 したがって、入力が次のような場合 ノード0から2へのパスが2つあるため、出力は0.24になります。1つは確率0.2、もう1つはノード1を経由するパスの確率は0.4 * 0.6 =0.24で、これが最大です。 これを解