当前位置:网站首页>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
边栏推荐
- 推荐几款最好用的MySQL开源客户端,建议收藏!
- Basic knowledge of software engineering--requirements analysis
- 自助服务知识库是什么?
- Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
- 华为-求int型正整数在内存中存储时1的个数
- LeetCode-1. Two Sum
- LeetCode-101. Symmetric Tree
- #夏日挑战赛#【ELT.ZIP】啃论文俱乐部——学术科研方法论沉淀辑
- FTXUI基础笔记(botton按钮组件进阶)
- How to use bitwise operators in C language
猜你喜欢
随机推荐
String compression (3) short string compression
MS | 使用小技巧不完全总结
秘密共享方案介绍SS
软件配置 | pip下载第三方库文件及配置pip源的不完全总结
【荣耀智慧服务】快捷服务开发指南
shell获取前n天的日期
Embedded Development: Embedded Basics - Mapping Peripherals Using Arrays of Pointers
cube-studio配置镜像仓库并允许
C language symbols on how to use
LeetCode-922. Sort Array By Parity II
FTXUI基础笔记(hello world)
glui.h无法找到描述+解决+测试
【JDK】Oracle又一个JDK大版本停止扩展技术支持
注解和反射、持续
雷达人体存在感应器,人体感知控制应用,为客户提供真实的感知方案
v-if指令:操作dom元素(标签)的显示与隐藏
CDF 图的含义
LeetCode-101. Symmetric Tree
一种新的测试方法:视觉感知测试
电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)【6节点 9节点 14节点 26节点 30节点 57节点】(Matlab代码实现)










