当前位置: 首页 > news >正文

力扣刷题:将数组分成和相等的三个部分

给你一个整数数组 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

解析:
1 计算总和,检查是否能被3整除

2 每部分的目标值是 sum/3

3 遍历数组累加,每当累加和等于 target 时,就找到了一段

4 重置累加器继续找下一段

5 如果能找到至少3段(注意最后一段会自动满足),就返回 true

/** * 检查数组是否能被分成三个连续非空子数组,且每个子数组的和相等 * @param {number[]} arr - 输入的整数数组 * @return {boolean} */varcanThreePartsEqualSum=function(arr){// 1. 计算数组所有元素的总和letsum=0for(leti=0;i<arr.length;i++){sum+=arr[i]}// 2. 如果总和不能被3整除,直接返回false// 因为三部分和相等的话,每部分必须是总和的三分之一if(sum%3)returnfalse// 3. 初始化计数器和当前累加和letcount=0// 记录已经找到的和等于目标值的子数组个数letcurrent=0// 当前子数组的累加和consttarget=sum/3// 每个子数组应该达到的目标值// 4. 遍历数组寻找满足条件的子数组for(leti=0;i<arr.length;i++){current+=arr[i]// 将当前元素加入累加和// 如果当前累加和等于目标值,说明找到了一个符合条件的子数组if(current===target){count++// 找到的子数组数量加1current=0// 重置累加和,开始寻找下一个子数组}}// 5. 如果找到至少3个满足条件的子数组,返回true// 注意:count可能大于3,比如数组中有0的情况:// [1,0,0,1,0,0,1] → 总和=3,target=1,count=7returncount>=3};
http://www.zskr.cn/news/162590.html

相关文章:

  • 仅需3步完成AI建模?,Open-AutoGLM隐藏功能首次完整披露
  • 语言濒危保护:TensorFlow少数民族语音识别
  • 从零到运行只需8分钟:Open-AutoGLM AI智能体极速安装教程
  • 【今晚开播】社区说|Google AI 构建可落地的全栈技术体系
  • Vue.Draggable拖拽排序实战指南:从开发痛点到底层原理
  • Arduino ESP32离线安装包常见问题快速理解
  • PaddlePaddle镜像如何接入Prometheus做监控告警?
  • 公平性检测:TensorFlow What-If Tool使用
  • 终极Markdown解析方案:为什么MD4C是开发者首选?
  • 3分钟掌握PPSSPP控制映射:让你的手机变身专业PSP掌机
  • 快速理解Arduino Nano与继电器在家电控制中的配合
  • 2025防水音柱室外音箱厂家综合实力排名:从产能到专利的权威比拼 - 爱采购寻源宝典
  • Agentic AI教育应用的全球化布局:提示工程架构师的多文化提示设计
  • Vibe Draw三维建模终极指南:从草图到3D世界的快速入门
  • AI与SEO优化协同提升关键词效果的实用策略
  • KVM虚拟化性能优化实战指南:如何显著降低虚拟机Exit频率
  • 【Open-AutoGLM安装终极指南】:资深工程师亲授3种高成功率部署方案
  • Canvas动画库国际化适配终极指南:构建全球化应用的完整解决方案
  • 医院药房信息管理系统功能
  • 2025必备10个降AIGC工具,继续教育人必看
  • ESP32 OTA固件升级在家用场景的应用:系统学习
  • 医院医疗设备信息化管理系统的设计与实现开题报告
  • MissionControl终极指南:Switch跨平台蓝牙控制器完整教程
  • Arduino创意作品光照感应控制灯设计深度剖析
  • JMeter脚本中的变量处理:增值操作详解
  • 5个OHHTTPStubs实战技巧:从入门到精通的完整指南
  • AWS Amplify分布式追踪实战:X-Ray集成完整指南
  • 影视推荐系统的设计与实现开题报告
  • 物理信息神经网络完整指南:7天从零掌握科学计算革命技术
  • Stm32开发的Bldc电机控制器项目包括程序源码和protues仿真,可调速,可控制方向,可...