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
-
Pythonでノードと子孫の違いを見つけるプログラム
二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans:
-
Pythonでツリーのすべての要素の合計を見つけるプログラム
いくつかの値を含む二分木があるとすると、ツリー内のすべての値の合計を見つける必要があります。 したがって、入力が次のような場合 その場合、出力は14になります これを解決するには、次の手順に従います- 関数recurse()を定義します。これはノードを取ります val:=ノードの値 ノードの左側がnullでない場合、 val:=val + recurse(ノードの左側) ノードの権利がnullでない場合、 val:=val + recurse(ノードの右側) 戻り値 メインの方法から、次のようにします- ルートがゼロ以外