1013. 将数组分成和相等的三个部分 数组切分
1013. 将数组分成和相等的三个部分
已解答
简单
相关标签
相关企业
提示
给你一个整数数组 arr
,只有可以将其划分为三个和相等的 非空 部分时才返回 true
,否则返回 false
。
形式上,如果可以找出索引 i + 1 < j
且满足 (arr[0] + arr[1] + ... + arr[i] == arr[i + 1] + arr[i + 2] + ... + arr[j - 1] == arr[j] + arr[j + 1] + ... + arr[arr.length - 1])
就可以将数组三等分。
示例 1:
输入:arr = [0,2,1,-6,6,-7,9,1,2,0,1] 输出:true 解释:0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1
示例 2:
输入:arr = [0,2,1,-6,6,7,9,-1,2,0,1] 输出:false
示例 3:
输入:arr = [3,3,6,5,-2,2,5,1,-9,4] 输出:true 解释:3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4
提示:
3 <= arr.length <= 5 * 104
-104 <= arr[i] <= 104
class Solution(object):def canThreePartsEqualSum(self, arr):total_sum = sum(arr)if total_sum % 3!= 0:return Falsetarget_sum = total_sum // 3part_sum = 0count = 0for num in arr:part_sum += numif part_sum == target_sum:count += 1part_sum = 0if count == 3:return Truereturn False
会有这种例子出现,加大了题目的难度arr=[0,0,0,0]