[Swift]LeetCode927. 三等分 | Three Equal Parts
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9826329.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given an array A
of 0
s and 1
s, divide the array into 3 non-empty parts such that all of these parts represent the same binary value.
If it is possible, return any [i, j]
with i+1 < j
, such that:
A[0], A[1], ..., A[i]
is the first part;A[i+1], A[i+2], ..., A[j-1]
is the second part, andA[j], A[j+1], ..., A[A.length - 1]
is the third part.- All three parts have equal binary value.
If it is not possible, return [-1, -1]
.
Note that the entire part is used when considering what binary value it represents. For example, [1,1,0]
represents 6
in decimal, not 3
. Also, leading zeros are allowed, so [0,1,1]
and [1,1]
represent the same value.
Example 1:
Input: [1,0,1,0,1] Output: [0,3]
Example 2:
Input: [1,1,0,1,1] Output: [-1,-1]
Note:
3 <= A.length <= 30000
A[i] == 0
orA[i] == 1
给定一个由 0
和 1
组成的数组 A
,将数组分成 3 个非空的部分,使得所有这些部分表示相同的二进制值。
如果可以做到,请返回任何 [i, j]
,其中 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, -1]
。
注意,在考虑每个部分所表示的二进制时,应当将其看作一个整体。例如,[1,1,0]
表示十进制中的 6
,而不会是 3
。此外,前导零也是被允许的,所以 [0,1,1]
和 [1,1]
表示相同的值。
示例 1:
输入:[1,0,1,0,1] 输出:[0,3]
示例 2:
输出:[1,1,0,1,1] 输出:[-1,-1]
提示:
3 <= A.length <= 30000
A[i] == 0
或A[i] == 1
388ms
1 class Solution { 2 func threeEqualParts(_ A: [Int]) -> [Int] { 3 var ones = [Int]() 4 for var i in 0..<A.count { 5 if A[i] == 1 { 6 ones.append(i) 7 } 8 } 9 if ones.count%3 != 0 { 10 return [-1, -1] 11 } 12 13 if ones.count == 0 { 14 return [0, A.count-1] 15 } 16 17 let part = ones.count/3 18 19 let trZero = A.count - ones.last! - 1 20 let i = ones[part-1] + trZero 21 let j = ones[part*2-1] + trZero 22 23 if i >= ones[part] { 24 return [-1, -1] 25 } 26 if j >= ones[part*2] { 27 return [-1, -1] 28 } 29 30 for var k in 0..<part { 31 let a = i - ones[k] 32 let b = j - ones[k+part] 33 let c = A.count - ones[k+part*2]-1 34 if a != b { 35 return [-1, -1] 36 } 37 if b != c { 38 return [-1, -1] 39 } 40 } 41 42 return [i, j+1] 43 } 44 }
424ms
1 class Solution { 2 func threeEqualParts(_ A: [Int]) -> [Int] { 3 let countA:Int = A.count 4 var one:Int = 0 5 for x in A {one += x} 6 if one % 3 != 0 {return [-1,-1]} 7 if one == 0 {return [0,countA - 1]} 8 one /= 3 9 var cc:Int = 0 10 var pos:[Int] = [Int](repeating: -2,count: 3) 11 var idx:Int = 0 12 for i in 0..<countA 13 { 14 if A[i] == 1 && cc % one == 0 15 { 16 pos[idx] = i 17 idx += 1 18 } 19 cc += A[i] 20 } 21 var len:Int = countA - pos[2] 22 if pos[1] < (pos[0] + len) || pos[2] < (pos[1] + len) {return [-1,-1]} 23 var i:Int = pos[0], j:Int = pos[1], k:Int = pos[2] 24 repeat 25 { 26 if (A[i] != A[j] || A[i] != A[k]) {return [-1,-1]}; 27 i += 1 28 j += 1 29 k += 1 30 }while(k < countA) 31 return [pos[0] + len - 1, pos[1] + len] 32 } 33 }
428ms
1 class Solution { 2 func threeEqualParts(_ A: [Int]) -> [Int] { 3 let countA:Int = A.count 4 var one:Int = 0 5 for x in A {one += x} 6 if one % 3 != 0 {return [-1,-1]} 7 if one == 0 {return [0,countA - 1]} 8 one /= 3 9 var cc:Int = 0 10 var pos:[Int] = [Int](repeating: -2,count: 3) 11 var idx:Int = 0 12 for i in 0..<countA 13 { 14 if A[i] == 1 && cc % one == 0 15 { 16 pos[idx] = i 17 idx += 1 18 } 19 cc += A[i] 20 } 21 var len:Int = countA - pos[2] 22 if pos[1] < (pos[0] + len) || pos[2] < (pos[1] + len) {return [-1,-1]} 23 var i:Int = pos[0], j:Int = pos[1], k:Int = pos[2] 24 repeat 25 { 26 if (A[i] != A[j] || A[i] != A[k]) {return [-1,-1]}; 27 i += 1 28 j += 1 29 k += 1 30 }while(k < countA) 31 return [pos[0] + len - 1, pos[1] + len] 32 } 33 }
转载于:https://www.cnblogs.com/strengthen/p/9826329.html
[Swift]LeetCode927. 三等分 | Three Equal Parts相关推荐
- leetcode 927. Three Equal Parts | 927. 三等分(Java)
题目 https://leetcode.com/problems/three-equal-parts/ 题解 不知道为什么是 hard,感觉这道题没有套路(印象中这几道 hard 都没有什么套路,这就 ...
- java中equals的反义词_equals是什么意思_equals怎么读_equals翻译_用法_发音_词组_同反义词_同样的人( equal的名词复数 )-新东方在线英语词典...
词汇搭配 用作形容词 (adj.)-+名词equal ability同等的能力 equal amount相同的数目 equal attention同样重视 equal chance平等的机会 equa ...
- ux设计_UX评论模式品牌知道规则并且也打破了规则
ux设计 It started with a Sweetgreen on the corner of W 91st street and Broadway, three blocks from Cen ...
- java 统计文本中出现概率最高的10个字符串!!
以前经常在CSDN博客上看别人的文章,有时是遇到难题为了寻找思路,有时则是为了偷懒,直接复制别人的源代码,所以对于写这些博客的技术大神,我都是佩服且感激的.感激于他们把我的问题分析的如此透彻明白,佩服 ...
- 斯坦福大学计算机类课程视频
斯坦福大学计算机类课程都是以CS开头编号,可以在网址https://exploredegrees.stanford.edu/coursedescriptions/cs/查询,在网上可以登录查看课程的课 ...
- 整理了 65 个 Matplotlib 案例,这能不收藏?
作者|周萝卜 来源|萝卜大杂烩 Matplotlib 作为 Python 家族当中最为著名的画图工具,基本的操作还是要掌握的,今天就来分享一波 文章很长,高低要忍一下,如果忍不了,那就收藏吧,总会用到 ...
- 仅需10分钟:开启你的机器学习之路
选自freecodecamp 作者:Tirmidzi Faizal Aflahi 机器之心编译 机器学习之路虽漫漫无垠,但莘莘学子依然纷纷投入到机器学习的洪流中.如何更有效地开始机器学习呢?所谓「八仙 ...
- GRE核心词汇助记与精练-List9切分、部分
文章目录 1.cis,tom,sect 2.fract 3. part 4 其他与"切"和"裂"有关的词根和单词 1.cis,tom,sect (1)词根cis ...
- Introduction for i-Teams
Introduction for i-Teams Jan 17 文章目录 Introduction for i-Teams Online platform Covid Zoom rooms Amy W ...
最新文章
- 在GridView内访问特定控件
- 爱立信和威瑞森电信使用VR流式车来测试5G
- 新生儿信息管理系统升级说明
- Harbour.Space Scholarship Contest 2021-2022 E. Permutation Shift 思维 + 剪枝
- 手机端html5 面试,今日头条 张祖俭 - H5动画在移动平台上的性能优化实践
- php mysql复杂查询_PHP MySQL如何做更复杂的查询
- 近期在做或要做的实验
- Dart 基礎 - 3
- 《商务与经济统计》(一)
- 十八、D触发器介绍:
- 腾讯云函数转华为云函数
- 【图床】PicGo配置图片压缩
- 怎样将纸质文档转换成图片,然后转换成word文字
- 解决ping值波动,一下20ms,一下上千ms的问题。
- vue3安装vuex报错: Could not resolve dependency npm ERR peer vue@“^2.0.0“ from vuex@3.6.2
- 本地文件复制到远程桌面无法粘贴
- 计算机考证模拟运算表案例解析
- vue返回上一页面时记忆回到原先滚动的位置
- 单片机c语言串口通信协议实现,单片机C语言之串口通信协议
- 【CodeForces 1255D --- Feeding Chicken】
热门文章
- 【译】An Opinionated Introduction to AutoML and Neural Architecture Search
- Android系统中的进程管理:内存的回收
- ARM Cortex-A 编程手册学习笔记
- xp框架下载官方_斐讯路由器系列「K1-K2-K2P-K2T」-Breed刷入工具v1.1支持XP系统
- JZOJ 5050. 【GDOI2017模拟一试4.11】颜色树
- Qt 运用鼠标绘制多边形
- mysql sys exec_mysql提权lib_mysqludf_sys执行sys_exec出现32256的问题解决办法
- python args函数_Python函数参数*args和**kwargs
- [USACO14JAN]记录奥林比克
- mysql幻读和不可重复读的区别_面试官:MySQL的可重复读级别能解决幻读吗