LeetCode.1013-分割数组为三个和相同的部分
这是小川的第378次更新,第406篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第240题(顺位题号是1013)。给定一个整数数组A,当且仅当我们可以将数组分成具有相等和的三个非空部分时才返回true。
形式上,我们可以对数组进行分区,如果我们能找到索引i + 1 <j
使得
A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] + ... + A[j-1] == A[j] + A[j-1] + ... + A[A.length-1]
。
例如:
输入:[0,2,1,-6,6,-7,9,1,2,0,1]
输出:true
说明:0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1
输入:[0,2,1,-6,6,7,9,-1,2,0,1]
输出:false
输入:[3,3,6,5,-2,2,5,1,-9,4]
输出:true
说明:3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4
注意:
3 <= A.length <= 50000
-10000 <= A[i] <= 10000
02 解题
题目的意思是数组中的元素可以分为三部分,每部分的和都相等,如果给的数组符合上述条件,就返回true
。
思路:先把A的总和求出来,判断是否能被3整除,如果可以,就再遍历A数组,将元素累加求和,如果当前累加的元素之和等于总和的三分之一,就记一次数,将存当前累加的元素之和的变量重置为0,继续遍历剩下的元素,最后判断记数次数是否等于3即可。
public boolean canThreePartsEqualSum(int[] A) {
int totalSum = 0, eachSum = 0;
for (int num : A) {
totalSum += num;
}
if (totalSum%3 != 0) {
return false;
}
eachSum = totalSum/3;
int n = A.length, temSum = 0, count = 0;
for (int i = 0; i<n; i++) {
temSum += A[i];
if (temSum == eachSum) {
count++;
temSum = 0;
}
}
return count == 3;
}
03 小结
算法专题目前已连续日更超过七个月,算法题文章246+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode.1013-分割数组为三个和相同的部分的更多相关文章
- Java实现 LeetCode 1013 将数组分成和相等的三个部分
1013. 将数组分成和相等的三个部分 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 ...
- Leetcode 659.分割数组为连续子序列
分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [1,2,3 ...
- leetcode 410. 分割数组的最大值(二分法)
1. 题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意: 数组长度 n 满足以下条件: 1 ≤ n ...
- Java实现 LeetCode 659 分割数组为连续子序列 (哈希)
659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...
- LeetCode 410——分割数组的最大值
1. 题目 2. 解答 此题目为 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第二道--最小分割分数. class Solution { public: // 若分割数组的最大值 ...
- Leetcode 410.分割数组的最大值
分割数组的最大值 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意:数组长度 n 满足以下条件: 1 ≤ n ...
- Java实现 LeetCode 410 分割数组的最大值
410. 分割数组的最大值 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意: 数组长度 n 满足以下条件: ...
- [每日一题系列] LeetCode 1013. 将数组分成和相等的三个部分
题目: 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + . ...
- LeetCode | 1013. 将数组分成和相等的三个部分
给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果我们可以找出索引i+1 < j且满足(A[0] + A[1] + ... ...
随机推荐
- CTF基本常识
参照百度百科: https://baike.baidu.com/item/Pwn/5321286?fr=aladdin ”Pwn”是一个黑客语法的俚语词 [1] ,是指攻破设备或者系统 [2] . ...
- 扩展Puppet – 建立Puppet CA集群
扩展Puppet – 建立Puppet CA集群 (1 votes, average: 5.00 out of 5) 588 views 2012 年 3 月 4 日Puppet.运维ca.mast ...
- Linux内核编译完整过程
Linux内核编译完整过程 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过 ...
- chomd添加权限
chmod 777 -R * 的意思是把当前目录所有文件(递归的)的属性全部为7
- python selenium 笔记
1.安装环境 下载python 3.6.4 第一页把最下面的环境变量勾上.第二页把 all user 勾上 直接安装到下一步 安装完成之后 cmd直接输入python 可以看到版本 2.安装 ...
- JavaScript 正则表达式——对象,修饰符,元字符,字符类,范围类
㈠RegExp 对象 ⑴JavaScript通过内置对象RegExp支持正则表达式 ⑵有两种方法实例化RegExp对象 ①字面量 ②构造函数 ⑶字面量示例 示例1: 你会发 ...
- 51 Nod 1134 最长递增子序列(经典问题回顾)
1134 最长递增子序列 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元 ...
- 分区间统计sql、删除重复数据
删除重复数据 备份表 删除最早的评论
- webpack3升级webpack4
cnpm i webpck@4 webpack-cli -D cnpm i webpack-cli -D cnpm update npm WARN deprecated extract-text-we ...
- 2019新的开始,新的规划,庆祝CSDN访问量过千
刚刚看了下博客访问量六千八百七十多个,然后我就自己刷新了一下,留个截图做纪念吧. 每一年都会有很多计划,然而到了年末却发现,未完成的还剩一大半,而完成的却屈指可数. 不过该立的flag还是要立的,顺便 ...