力扣每日一题 三等分

LeetCode每日一题--将数组分成和相等的三个部分 LeetCode刷题笔记之将数组分成和相等的三个部分 阅读详情

Day 11

Date: October 6, 2022 11:41 AM
LinkedIn: https://leetcode.cn/problems/three-equal-parts/
Title: 三等分

class Solution:
    def threeEqualParts(self, arr: List[int]) -> List[int]:
        def findIndex(x): # 找到累积到x时对应的下标
            count=0
            for i, v in enumerate(arr): # enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。
                count+=v
                if count == x:
                    return i
        n = len(arr)
        cnt, mod = divmod(sum(arr),3) # divmod()的返回值与(a // b,x%y)相同。
        if mod: # 除不尽 无法分成三个部分
            return [-1, -1]
        if cnt == 0: # 只有0
            return [0, n-1]
        i, j, k = findIndex(1), findIndex(cnt+1), findIndex(cnt*2+1) #找到三个部分的第一个数的下标
        while k < n and arr[i]==arr[j]==arr[k]: # 判断每个部分数是否相等
            k+=1
            j+=1
            i+=1
        if k==n:
            return [i-1, j]
        else:
            return [-1, -1]

运用了python的两个函数enumerate()与divmod()

  • enumerate() 函数属于python的内置函数之一,用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    • enumerate(sequence, [start=0])
      • sequence – 一个序列、迭代器或其他支持迭代对象。
      • • start – 下标起始位置。
  • divmod()方法采用两个参数值,并返回由它们的商和余数组成的一对数字(元组)。
    • divmod(x, y)
      • x-一个非复数(分子),y-一个非复数(分母)
      • 如果x和y是整数,则divmod()的返回值与(a // b,x%y)相同。
      • 如果x或y的值为浮点型,则结果为(q,x%y)。 (q是商的整个部分)
【每日一题】927. 三等分 模拟 阅读详情

相关推荐

密码学小白必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学初学者提供了系统获取和阅读三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文的实战指南。详细介绍了通过IACR官方渠道、ePrint预印本等权威资源免费下载论文的方法,并分享了高效筛选、精读核心章节及构建个人知识体系的具体策略,帮助读者快速切入密码学研究前沿。

weixin_28363123的博客 404

LeetCode每日一题——927. 三等分

给定一个由 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]为第三部分。 这三个部分所表示的二进制值相等。

hyk的博客 689

【Telephony】Telephony总纲!Phone进程流程(AOSP)

整个Framework层的Telephony框架运行在一个叫做Phone(com.android.phone)的进程中。 Phone进程启动的过程中,会初始化非常多的分支功能,SIM卡流程初始化就是其中之一,所以我觉得有必要写一下Phone进程的框架

weixin_44513784的博客 1975

Leetcode-每日一题927. 三等分(双指针)

序列分成连续的三段序列,序列是由0、1组成,每段的0、1序列组成的二进制数都要相等。你只需要找到第一段序列与第二段序列的分割点。这题目要求我们分成三等分的且二进制数相等序列。, 第二段序列与第三段序列的分割点。题目需要你帮他把这个。

林钟一的博客 631

告别配置噩梦:用Vcpkg三行命令为Easy3D自动安装Boost、CGAL和Qt(VS2022实测)

本文详细介绍了如何使用Vcpkg工具在VS2022环境下为Easy3D项目一键安装Boost、CGAL和Qt等依赖库,解决传统手动配置的复杂性问题。通过三行简单命令即可自动完成下载、编译和路径配置,大幅提升开发效率,特别适合C++开发者快速搭建3D图形开发环境。

weixin_42525582的博客 210

从时序迷宫到稳定通信:FSMC配置中的时间参数深度解析与实战避坑指南

本文深入解析STM32 FSMC配置中的时间参数,特别是AddressSetupTime和DataSetupTime的实战配置技巧。通过STM32F407连接SRAM的实际案例,提供从理论计算到CubeMX配置的全流程指南,帮助开发者避免常见时序陷阱,确保稳定通信。

nginx7reverse的博客 82

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

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

goblin的博客 575

告别蓝牙音质妥协:用ESP32和PCM5102搭建WiFi无损音频播放器(附完整代码)

本文详细介绍了如何利用ESP32微控制器和PCM5102 DAC芯片构建一套完整的WiFi无损音频流媒体系统,彻底摆脱蓝牙协议的音质束缚。从硬件原理到软件实现,包括核心器件选型、电路设计、I2S音频驱动实现以及系统优化方案,帮助音频发烧友实现高保真无线音频传输。

weixin_30733003的博客 542

【leetCode每日一题】2022-10-06 927. 三等分 Java实现

LeetCode每日一题 2022-10-06

guliguliguliguli的博客 629

从被秒封到稳过Cloudflare!Canvas/WebGL/WebRTC多维度浏览器指纹隐身全实战

反爬和反反爬,本质上是一场持续的博弈,没有100%的隐身,只有不断升级的伪装。网上很多教程只给了个基础的噪声代码,却没讲透反爬的检测逻辑,导致你用了还是被封。这套方案的核心,不是简单的API重写,而是站在反爬的角度,模拟真实用户的所有特征,保证所有指纹的一致性、合理性、完整性。目前这套方案我用了半年,跑了上千万次请求,稳过国内国外99%的主流反爬平台,没有出现过一次因为指纹关联导致的批量封禁。大家有什么更狠的反爬场景,或者更好的伪装技巧,欢迎评论区一起交流。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1194

31、摩擦学中的材料选择

本博文深入探讨了摩擦学应用中材料选择的重要性,分析了材料的机械、物理和化学属性对摩擦学性能的影响。同时介绍了材料匹配原则、处理方法及表面涂层技术,以优化耐磨性和抗腐蚀性。通过实际案例和评估方法,为读者提供了系统化的材料选择流程和决策依据。

juice的博客 246

力扣 每日一题 927. 三等分【难度:困难,rating: 1994】(思维+后缀字符串+bitset技巧)

本题的关键在于发现: 1.字符串能被三等分 => 1的总个数必须是3的倍数。必须满足这个必要条件。 2.第3个子串的结束位置被固定在串的末尾,那么第3个子串的后缀0的个数suffix_zero_count,能用于限制前面第1、2个子串的后缀0个数。因为第3个子串的后缀0是固定的,而前面的两个子串的后缀0是可以往后调整的,只要它们的后缀0个数>=suffix_zero_count,多余的后缀0就可以划分给下一个子串作为前导0。通过这种调整,确定了第1、2个子串的结束位置,同时也确定了第2、3个子串的开始位置。

nefu_ljw的博客 791

TOGAF架构内容—TOGAF 内容框架和企业元模型

TOGAF架构内容—TOGAF 内容框架和企业元模型

深圳市多克创新科技有限公司 1664

【Day23】力扣:LeetCode算法刷题 [927. 三等分 ] [415. 字符串相加]

字符串相加,却不可以将字符直接转化为整形来运算,而且需要输出的依旧是字符串,那么为了得到每个位置上的数字,我们可以利用ASCII码值的加减来获取。那么我们每次就将两数字之和的个位数连接进结果的字符串中,十位数则累加进下一次的两数之和中,最终也就得到了我们需要的字符串。如果遍历过程中发现遍历到的三个数字不完全相同,说明无法将二进制数组分成三个表示相同值的部分,返回{-1,-1};还需要注意的是,我们从个位数开始遍历,所以得到的字符串是从最小位数字开始的,还需要将字符串反转一下,才算完成。

ebb29bbe的博客 1218

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【力扣927.三等分】

力扣927三等分

qq_56460466的博客 219

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【927.三等分】每日一题题解分享

力扣算法题:927.三等分 每日一题题解分享

m0_52309496的博客 171

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

力扣每日刷题

编程题 给定一个整数数组 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:...

snow941107的博客 2314

【累计24天】LeetCode 的每日一题

【打卡】LeetCode 每日签到。

关键概念 1157

力扣1013三等分解法与C++实现

判断一个整数数组arr能否被分割成三个的非空连续子数组。

w_2345678的博客 325

Python 每日一练leetcode

文章目录分糖果 分糖果 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。 然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。 重复上述过程(...

Dandandandanta的博客 834

LeeCode每日一题-简单篇

LeeCode每日一题-简单篇 每日一道算法题,一起学习一起进步,我会从简单题开始一步一步努力! 2020年12月29日–第一题 来自Leecode-1013 题目如下: 给你一个整数数组 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

qq_42448037的博客 408

leetcode每日刷题

leetcode今日偷懒:(只写了一道,没状态/(ㄒoㄒ)/~~)

JJR_YZ的博客 1058

LeetCode每日一题(2020/3/11)

LeetCode每日一题(2020/3/11) 1013. 将数组分成和相等的三个部分 给你一个整数数组 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] + …...

CV小菜鸟的博客 252

【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]) 就可以将数组三等分。 示例 1: 输出:[0,...

Antrn 1285

力扣第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
上一篇: 力扣每日一题 子域名访问计数
下一篇: 力扣每日一题 最大升序子数组和
只惠摸鱼
博客等级 码龄7年 128粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只惠摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值