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

Pythonで左右の要素の合計が等しいインデックスを見つけるプログラム


numsという項目のリストがあるとすると、iの左側にある数の合計が、iの右側にある数の合計と等しくなるように、最小のインデックスiを見つける必要があります。そのような解決策が見つからない場合は、-1を返します。

したがって、入力がnums =[8,2,3,6,5,2,5,9,1,2]のようである場合、インデックス4の残りの要素の合計は[であるため、出力は4になります。 8,2,3,6] =19であり、右側に存在する要素の合計も[2,5,9,1,2]=19です。

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

  • r:=numsに存在するすべての要素の合計

  • l:=0

  • インデックスiと値x(nums)ごとに、実行します

    • r:=r-x

    • rがlと同じ場合、

      • iを返す

    • l:=l + x

  • -1を返す

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

def solve(nums):
   r = sum(nums)
   l = 0
   for i,x in enumerate(nums):
      r -= x
      if r == l:
         return i
      l += x
   return -1

nums = [8,2,3,6,5,2,5,9,1,2]
print(solve(nums))

入力

[8,2,3,6,5,2,5,9,1,2]

出力

4

  1. Pythonでノードと子孫の違いを見つけるプログラム

    二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノ​​ード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans:

  2. Pythonでツリーのすべての要素の合計を見つけるプログラム

    いくつかの値を含む二分木があるとすると、ツリー内のすべての値の合計を見つける必要があります。 したがって、入力が次のような場合 その場合、出力は14になります これを解決するには、次の手順に従います- 関数recurse()を定義します。これはノードを取ります val:=ノードの値 ノードの左側がnullでない場合、 val:=val + recurse(ノードの左側) ノードの権利がnullでない場合、 val:=val + recurse(ノードの右側) 戻り値 メインの方法から、次のようにします- ルートがゼロ以外