当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
李斌带不动的长安新能源高端梦,华为和“宁王”能救吗?
v-for指令:根据数据生成列表结构
How to use bitwise operators in C language
C专家编程 第10章 再论指针 10.6 使用指针从函数返回一个数组
x64汇编代码测试 用户模式和内核模式
Knox 代理各类组件
How to generate code using the Swift Package plugin
C language symbols on how to use
Meaning of CDF graph
网页分析和一些基础题目
【QT VS项目名称修改】
cmake 小技巧 记录
聊聊云原生数据平台
植物肉,为何在中国没法“真香”?
第叁章模块大全之《 os模块》
64位 RT-Thread 移植到 Cortex-A53 系统 bug 修复笔记
注解和反射、持续
x86 与 x64 架构下函数参数传递的区别【汇编语言】
shell获取前n天的日期
重庆新壹汽与一汽集团达成新能源项目战略合作,赋能“碳中和”创造“碳财富”










