Pythonで合計が等しい3つの部分に配列を分割する
整数の配列Aがあるとすると、合計が等しい3つの空でない部分に配列を分割できる場合にのみ、出力はtrueになります。
正式には、(A [0] + A [1] + ... +A[i]がA[i+ 1] + A[と同じであるインデックスi+1
したがって、入力が[0,2,1、-6,6、-7,9,1,2,0,1]の場合、出力はtrueになります。 3つの配列は、[0,2,1]、[-6,6、-7,9,1]、および[2,0,1]
これを解決するには、次の手順に従います-
理解を深めるために、次の実装を見てみましょう-
例
class Solution(object):
def canThreePartsEqualSum(self, A):
temp = sum(A)
if (temp%3 != 0):
return 0
sum_left=[0 for i in range(len(A))]
sum_left[0] = A[0]
sum_right=[0 for i in range(len(A))]
sum_right[-1] = A[-1]
for i in range(1,len(A)):
sum_left[i] = A[i]+sum_left[i-1]
for i in range(len(A)-2,-1,-1):
sum_right[i] = A[i]+sum_right[i+1]
#print(sum_left,sum_right)
required_sum = temp/3
index1 = 0
index2 = len(A)-1
while index1 < index2:
while index1 <index2 and sum_left[index1]!=required_sum:
index1+=1
while index2>index1 and sum_right[index2]!=required_sum:
index2-=1
return index1<index2 and index1 != index2
ob1 = Solution()
print(ob1.canThreePartsEqualSum([0,2,2,-6,6,-7,9,2,2,0,2]))
入力
[0,2,1,-6,6,-7,9,1,2,0,1]
出力
true
-
Pythonの配列パーティションI
2n個の整数の配列があるとすると、これらの整数を(a1、b1)、(a2、b2)、...、(an、bn)のようにn組の整数にグループ化する必要があります。 (ai、bi)1からnの範囲内のすべてのiに対して可能な限り大きい。したがって、入力が[1、4、3、2]の場合、出力は4になります。したがって、nは2です。ペアの最大合計は4です。これはmin(1、2)+ min(3、4)です。 =4 これを解決するには、次の手順に従います- nは配列のサイズです 配列を並べ替える 回答:=0 0からnの範囲のiの場合、2ジャンプします answer:=answer + array [i]
-
Pythonでテキストファイルをリストまたは配列に読み込む方法は?
f = open('my_file.txt', 'r+') my_file_data = f.read() f.close() 上記のコードは、読み取りモードで「my_file.txt」を開き、my_file.txtから読み取ったデータをmy_file_dataに保存して、ファイルを閉じます。読み取り機能は、ファイル全体を一度に読み取ります。以下を使用して、ファイルを1行ずつ読み取り、リストに保存できます。 f = open('my_file', 'r+') lines = [line for line inf.readline