算法笔记-lc-927. 三等分(困难)

87、绝缘子闪络电压预测与分布式发电对中压网络故障的影响研究 本文研究了绝缘子闪络电压的预测方法及分布式发电对中压网络故障的影响。在闪络电压研究方面,建立了基于维度分析方法的数学模型,利用遗传算法确定电弧常数,并应用人工神经网络(ANN)和自适应神经模糊推理系统(ANFIS)进行预测,实验结果表明模型具有较高精度。在分布式发电研究方面,通过IEEE 34节点测试馈线建模,分析了DG引入后对故障电流和电力流动模式的影响,并依据IEC标准计算电缆热允许值,为电力系统的安全稳定运行提供理论支持。 阅读详情

题目

题干

给定一个由 0 和 1 组成的数组 arr ,将数组分成 3 个非空的部分 ,使得所有这些部分表示相同的二进制值。

如果可以做到,请返回任何 [i, j],其中 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, -1]。

注意,在考虑每个部分所表示的二进制时,应当将其看作一个整体。例如,[1,1,0] 表示十进制中的 6,而不会是 3。此外,前导零也是被允许的,所以 [0,1,1] 和 [1,1] 表示相同的值。

示例

示例 1:

输入:arr = [1,0,1,0,1]
输出:[0,3]
示例 2:

输入:arr = [1,1,0,1,1]
输出:[-1,-1]
示例 3:

输入:arr = [1,1,0,0,1]
输出:[0,2]

提示:

3 <= arr.length <= 3 * 104
arr[i] 是 0 或 1

题解

方法一:将 11 的数量三等分

思路与算法

如果存在一种分法使得三个非空部分所表示的二进制值相同,那么最终每一部分 1 的数量一定是相等的。根据这个思想,我们首先统计数组 arr 中 1的个数,把它设为sum。如果sum 不能被 3整除,那么显然不存在正确分法。否则,每一个部分都应当有 partial= 3sum个 1。

我们尝试找到arr 中第 1 个 1 出现的位置 first,第 partial+1 个 1出现的位置 second 以及第2×partial+1 个 1出现的位置third。因为每一部分末尾的 0 可以移动到下一部分的首部从而改变二进制值的大小, 所以每一部分的末尾难以界定。但是注意到,数组的末尾是无法改变的,因此区间[third,arr.length−1] 所表示的二进制值可以固定。

设 len=arr.length−third,表示二进制值的长度。接下来只需要判断 [first,first+len)、[second,second+len) 和[third,third+len) 是否完全相同即可。前提是 first+len≤second 并且second+len≤third。

如果以上三段区间是完全相同的,那么答案就是 [first+len−1,second+len]。最后需要注意到,如果 sum=0,我们需要直接返回答案 [0,2](或者其他任意合法答案)。

class Solution {
    public int[] threeEqualParts(int[] arr) {
        int sum = Arrays.stream(arr).sum();
        if (sum % 3 != 0) {
            return new int[]{-1, -1};
        }
        if (sum == 0) {
            return new int[]{0, 2};
        }

        int partial = sum / 3;
        int first = 0, second = 0, third = 0, cur = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 1) {
                if (cur == 0) {
                    first = i;
                } else if (cur == partial) {
                    second = i;
                } else if (cur == 2 * partial) {
                    third = i;
                }
                cur++;
            }
        }

        int len = arr.length - third;
        if (first + len <= second && second + len <= third) {
            int i = 0;
            while (third + i < arr.length) {
                if (arr[first + i] != arr[second + i] || arr[first + i] != arr[third + i]) {
                    return new int[]{-1, -1};
                }
                i++;
            }
            return new int[]{first + len - 1, second + len};
        }
        return new int[]{-1, -1};
    }
}

复杂度分析

时间复杂度:O(n),其中n 是arr 的长度。找到三个下标的时间复杂度为 O(n),判断三个部分是否相同的时间复杂度也是 O(n)。

空间复杂度:O(1),只用到常数个变量空间。

1、美洲原住民语言自然语言处理:Conchucos Quechua共指解析研究 本文介绍了针对低资源语言Conchucos Quechua的共指解析研究,提出了首个共指语料库qxoRef 1.0,并基于提及对方法和随机森林算法构建了基线系统。研究探讨了字符串、语法和话语特征在共指解析中的作用,并通过评估和错误分析揭示了当前方法的优势与局限。文章还提出了未来研究方向,包括改进语料库、引入句法分析以及优化特征表示,旨在推动低资源语言自然语言处理的发展。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第十篇 芯片设计04 电路与时序模型数学模型(1)

​:CDN产品经理需在技术深度(架构/协议)、业务广度(行业场景/商业化)、软实力(决策/沟通)三方面均衡发展,并通过“数据驱动+场景化创新”持续优化产品。能力规划需围绕“体验-成本-可靠性”三角平衡展开,同时关注边缘计算与安全的未来融合趋势。

weixin_49199313的博客 975

力扣刷题:判断数组能否三等分

在leetcode上看到一个题,数组三等分,题目如下: 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。 形式上,如果可以找出索引 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.len...

weixin_43090494的博客 1200

【信息科学与工程学】【通信工程】第一百九十一篇 路由器体系结构03

编号类型领域问题详细的数学分析(逐步推理)参数列表(表达式 / 数值范围 / 边界 / 测量)关联知识839DCI演进 · 收敛DCI 2030 年三大技术收敛方向步骤1:方向一:IPoDWDM 成为绝对主流(Omdia 2027 59% → 2030 80%+),OTN 退化为 OLS 纯光层。步骤2:方向二:800ZR+ 取代 400ZR 成为主力速率,PCS 使 800G 达 600–1000km。步骤3:方向三:AI 集群 DCI 催生 1.6T/3.2T 超短距(<10km)相干模块(OSFP-X

weixin_49199313的博客 858

分割数组(将数组三等分)

简单面试题——分割数组 时间复杂度O(n) //输入:一个自然数数组,选取其中2个数字num[i], num[j], 把数组三分, // 每一部分的累加和(不包括分割点的数字)相等。 // 例:nums[] = [2,1,3,1,1,1,5,3],选取nums[2] = 3, num[6] = 5, // 三部分的和都是3. 则打印输出2, 6, // 如果找不到符合条件的等分点,返回失败。(数组大小的量级最大是10^5) public class DivideArray {

了迹奇有没 4194

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02

编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2.

weixin_49199313的博客 306

【信息科学与工程学】【通信工程】第二百四十篇 IPv4/IPv6 功能点、特性和算法及 IPv4→IPv6 迁移特性02

说明:按「纯数学 → 数学物理 → 多物理场 → 界面/表面科学耦合 + 数学化学 + 运动科学(0.01 nm → μm → mm → cm 精度及超长运动)」纵向穿透,每一行给出,最后挂。

weixin_49199313的博客 509

LeetCode每日一题:927. 三等分 (困难) 数组 数学

LeetCode每日一题:927. 三等分 (困难) 数组 数学

goblin的博客 575

【信息科学与工程学】【物理/化学科学和工程技术】知识体系081 磁学——系列二 电磁学——电磁学理论模型01

编号模型名称核心数学描述关键参数与物理意义应用场景与说明EM1.001​麦克斯韦微分方程组∇·D=ρ, ∇·B=0, ∇×E=-∂B/∂t, ∇×H=J+∂D/∂tD-电通密度(C/m²), B-磁通密度(T), E-电场强度(V/m), H-磁场强度(A/m)所有电磁现象的基本控制方程,集成电路电磁分析基础EM1.002​麦克斯韦积分方程组∮S D·dS=Q, ∮S B·dS=0, ∮C E·dl=-dΦ_B/dt, ∮C H·dl=I+dΦ_D/dtQ-电荷(C), Φ_B-磁通(Wb), I-电流(A

weixin_49199313的博客 1161

leetcode数组按序三等分

LeetCode每日一题 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。 形式上,如果可以找出索引 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]) 就可以将数组三等分。 ...

weixin_46091531的博客 386

【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线08

编号类型领域子领域问题问题的数学分析及数值分析参数列表及数值范围/各类常量关联知识A873物理问题射频/太赫兹太赫兹脑胶质瘤边界术中识别​FEM-DEM-BEM-IEM分析太赫兹(140GHz)对"脑胶质瘤(WHO II-IV级)与正常白质"的介电差异,辅助术中边界判定(续A804癫痫+A805卒中)。 逐步推理: 1. FEM脑肿瘤:正常白质ε_r=35+8i@140G,胶质瘤IV级ε_r=45+15i(细胞密度↑+水肿),用FEM离散。 2. DEM性能:肿瘤区反射率R=0.5

weixin_49199313的博客 616

【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线03

按照之前的模式,继续补充961-970,保持领域覆盖均衡,延续材料、几何、拓扑、电磁、组网、信号、脉冲、数据传输、信号采集、信号编解码十个方向,每个方向至少一题,可以适当穿插一些之前未充分覆盖的子领域(比如材料还可以做钙钛矿、MXene等;我们收到了用户要求继续补充的问题,需要新增编号,并关注射频/天线的材料领域、几何、拓扑、电磁、组网、信号、脉冲、数据传输、信号采集、信号编解码领域。注意保持表格格式一致,内容涵盖射频/天线领域的各种子领域,包括6G、5G、脉冲、波/函数、组合、组网、射频设计等。

weixin_49199313的博客 262

927. 三等分「数学」

leecode 2022-10-06 每日一题题解

qq_40878398的博客 254

国密SM3摘要算法使用指南

SM3是中国国家密码管理局发布的密码行业标准(GM/T 0004-2012),是我国自主研发的密码算法之一。它属于哈希算法(摘要算法),用于将任意长度的输入数据转换为固定长度的输出摘要。✅ 国产自主可控,符合国家密码管理要求✅ 安全性高,抗碰撞攻击能力强✅ 计算效率高,适合各种应用场景input: 输入数据缓冲区ilen: 输入数据长度out_str: 输出摘要缓冲区(长度至少65字节)0: 成功printf("SM3摘要: %s\n", sBuff);

2409_87904597的博客 755

告别单调词云!手把手教你用wordcloud2制作科比剪影词云(R语言实战)

本文详细介绍了如何使用R语言的wordcloud2包制作科比剪影词云,从环境准备到实战操作,涵盖图像预处理、参数调优及常见问题解决方案。通过图形化词云技术,将数据可视化与艺术表达完美结合,适合数据分析师和体育爱好者学习应用。

omega的博客 625

基于Freertos与lwip移植FreeModbusTcp协议

基于FreeRTOS的N32G457VEL7之LWIP网络协议栈移植-优快云博客。

Dd_456456的博客 3238

RoboMaster新手必看:用STM32 HAL库搞定大疆M3508电机正反转(附完整代码)

本文详细介绍了如何使用STM32 HAL库驱动大疆M3508电机实现正反转控制,包括硬件准备、PWM配置、电机校准及完整代码实现。特别针对RoboMaster新手常见问题提供了解决方案,如电机抖动、不转等故障排查,并分享了缓启动、DMA更新等进阶技巧,帮助开发者快速掌握电机控制核心技术。

weixin_42519985的博客 226

红黑树

R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须...

xmh_sxh_1314的博客 519

openmediavault(OMV)(30)插件介绍(3)filebrowser文件管理器

filebrowser可以对omv的文件进行图形化管理,而不需要每次都通过命令进行修改。filebrowser安装。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2320

DeepSeek-V3-0324企业级技术支持助手实战:长上下文+溯源生成+工具调用

大语言模型在企业服务场景中的核心价值,不仅在于参数规模,更在于长上下文理解、结构化工具调用与知识溯源能力。DeepSeek-V3-0324通过原生支持128K上下文、检索增强式推理(RAR)及高容错JSON Schema工具调用,显著提升工单分类、多轮追问与文档引用准确率。其技术优势体现在对中文IT术语的强一致性、末尾信息注意力衰减控制优化,以及主动拒绝幻觉的可信边界机制。本文聚焦真实客服系统落地,覆盖BM25预筛+模型精排的混合检索架构、structured context协议设计、PagedAttent

weixin_30740295的博客 323

手把手教您如何群晖/飞牛NAS等服务器上一键部署洛雪音乐同步服务,手机电脑无缝同步歌单,支持外网访问

🎵 手机电脑歌单不同步?用Docker在群晖/飞牛NAS等服务器上搭个同步服务器, 3分钟搞定 !支持docker-compose一键部署,手机、电脑、平板收藏夹实时同步,外出也能用域名远程访问 ~ ✨

XiaoqiangClub的博客 4601

Qt Creator牵手DeepSeek,开启AI开发新征程

Qt Creator 是一款功能强大的跨平台集成开发环境(IDE),专为 Qt 应用程序开发量身定制。它支持在编程过程中使用 GitHub Copilot 等编码助手,能帮助开发者为桌面、移动端和嵌入式平台创建软件。在代码编辑方面,Qt Creator 具备代码补全、语法突出显示、重构等功能,内置文档也随手可得,极大提高了代码编写的效率和准确性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 7186

力扣第927题——三等分

思路:由于要把数组arr三等分,每一部分表示相同的二进制值,且前导零允许存在,因此可以得知每一部分的1的数量必须是一样的。但是由于最后一部分,无法将最后的0分给后一个数(本身就是最后一个数了),所以最后一部分值是固定的,我们可以根据最后一部分的值进行判断。例如,[1,1,0] 表示十进制中的 6,而不会是 3。此外,前导零也是被允许的,所以 [0,1,1] 和 [1,1] 表示相同的值。arr[j], arr[j + 1], ..., arr[arr.length - 1] 为第三部分。

mhc20201554114的博客 754

Python之afdx包语法、参数和实际应用案例

Python 的 afdx 包是针对 AFDX 协议的轻量级开发工具,专注于 AFDX 数据帧的解析、构造、发送/接收、协议合规性校验等核心能力,广泛应用于航空电子设备测试、仿真、数据监控等场景。

王国平的博客 982

将数组分为和相等的三部分

题目: 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 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]) 就可以将数组三等分。 示例: 示例 1: ...

qq_43411555的博客 590

openmediavault(OMV) (1)安装部署

EXT3(Third Extended File System): EXT3 是 Linux 中广泛使用的日志文件系统,是 EXT2 文件系统的升级版本。这里可以根据自己的需求进行设置,目前只设置了自动登出为1天,为方便后续配置使用,其他设置可根据自己的具体需求进行设置。通过cd 命令进入到我们的raid存储中,通过ls发现里面没有任何的数据,因为我们的raid存储中还未创建任何数据。我的系统要安装在100G的磁盘上,故选择100G的磁盘,实际可以根据具体情况选择。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2168

Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程

本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的元器件创建IBIS模型的方法。

fydar的博客 2168
上一篇: 算法笔记-lc-1800. 最大升序子数组和(简单)
下一篇: 算法笔记-lc-870. 优势洗牌(中等)
Hell_potato777
博客等级 码龄6年 47粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值