当前位置:网站首页>leetcode:1013. 将数组分成和相等的三个部分
leetcode:1013. 将数组分成和相等的三个部分
2022-08-10 16:33:00 【心软且酷丶】
难度:简单
给你一个整数数组 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: def canThreePartsEqualSum(self, arr: List[int]) -> bool: a = sum(arr) if a % 3 ==1: return False else: pj = a / 3 list_index1 = [] list_index2 = [] s = 0 s1 = 0 s2 = 0 for i in range(len(arr)-1): s += arr[i] if s == pj: list_index1.append(i) for j in range(list_index1[0]+1,len(arr)-1): s1 += arr[j] if s1 == pj: list_index2.append(j) for m in range(list_index2[0]+1,len(arr)): s2 += arr[m] if s2 == pj: return True return False
边栏推荐
猜你喜欢
随机推荐
清理空的 Jetpack Compose 应用程序模板
LeetCode-692. Top K Frequent Words
How to generate code using the Swift Package plugin
电力系统潮流【牛顿-拉夫逊法】(4节点、5节点、6节点、9节点)(Matlab代码实现)
String compression (3) short string compression
cmake record
1001 A+B Format(字符串处理)
常用持续集成工具对比
接口测试中,应不应该用数据库
自助服务知识库是什么?
PNG如何变gif?教你一招png秒变gif动图的方法
如何修改gif图片尺寸?教你一键裁剪gif尺寸
本地导入不报错,服务器端报错 No module named xxx
被大厂面试官参考的Redis笔记,堪称Redis面试天花板
深度学习培训二笔记
重庆新壹汽与一汽集团达成新能源项目战略合作,赋能“碳中和”创造“碳财富”
什么是开源中的 “胖虎效应”
面了个腾讯25k+出来的,他让我见识到什么基础的天花板
易基因|深度综述:m6A RNA甲基化在大脑发育和疾病中的表观转录调控作用
Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)