leetcode 927. Three Equal Parts | 927. 三等分(Java)
题目
https://leetcode.com/problems/three-equal-parts/
题解
不知道为什么是 hard,感觉这道题没有套路(印象中这几道 hard 都没有什么套路,这就是 hard 的原因吗),甚至没有 get 到这题的难点是什么,大概是在考察分析问题的能力吧。
分析完之后,思路很简单。先算总共有多少个 1,就可以分离出右边的部分了。然后根据右边的部分,匹配出左边部分和中间部分。
class Solution {public int[] threeEqualParts(int[] arr) {int leftEnd, midEnd, rightBegin;// 统计每个相同部分中1的个数int count = 0;for (int n : arr)count += n;if (count == 0) return new int[]{0, arr.length - 1};if (count % 3 != 0) return new int[]{-1, -1};count /= 3;// 分离最后一个部分int cnt = 0;int i;for (i = arr.length - 1; cnt < count; i--) {cnt += arr[i];}rightBegin = i + 1;// 分离第一个部分,并验证其与最后一个部分相同i = 0;while (arr[i] != 1) i++;int j = rightBegin;while (j < arr.length) {if (arr[i++] != arr[j++]) return new int[]{-1, -1};}// 分离中间部分,并验证其与最后一个部分相同leftEnd = i - 1;while (arr[i] != 1) i++;j = rightBegin;while (j < arr.length) {if (arr[i++] != arr[j++]) return new int[]{-1, -1};}midEnd = i;return new int[]{leftEnd, midEnd};}
}
leetcode 927. Three Equal Parts | 927. 三等分(Java)相关推荐
- LeetCode (12.整数转罗马数字)JAVA StringBuffer
LeetCode (12.整数转罗马数字)JAVA StringBuffer 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 1 ...
- LeetCode(13.罗马数字转整数) JAVA Hashmap
LeetCode(13.罗马数字转整数) JAVA Hashmap 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...
- LeetCode 09:回文数(Java实现)
LeetCode 09:回文数(Java实现) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输 ...
- [LeetCode]187. 重复的DNA序列(java实现)暴力 + 哈希
[LeetCode]187. 重复的DNA序列(java实现) 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 1. ...
- LeetCode每日一题:927. 三等分 (困难) 数组 数学
题目:力扣 给定一个由 0 和 1 组成的数组 arr ,将数组分成 3 个非空的部分 ,使得所有这些部分表示相同的二进制值. 如果可以做到,请返回任何 [i, j],其中 i+1 < j,这 ...
- [Swift]LeetCode927. 三等分 | Three Equal Parts
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- leetcode 416. Partition Equal Subset Sum | 416. 分割等和子集(Java)
题目 https://leetcode.com/problems/partition-equal-subset-sum/ 题解 乍一看是背包问题,但不同的是,本题要求结果等于某值,背包要求结果小于某值 ...
- LeetCode 674. Longest Continuous Increasing Subsequence--python,Java,C++解法
此题链接:Longest Continuous Increasing Subsequence - LeetCode Given an unsorted array of integers, find ...
- LeetCode hard 84. Largest Rectangle in Histogram--python,java 15行,c++ 15行 解法
题目地址: Given n non-negative integers representing the histogram's bar height where the width of each ...
最新文章
- Oracle Export方式数据库备份和恢复(一)
- 【动态规划】装箱问题
- C#——语言基础 之 运算符!
- Windows 10 LTSC添加UWP支持
- if you are alone with your mac connected to Internet
- PDF Reader
- OXY OPENCART 商城自适应主题模板 ABC-0020-05
- my_atio()代码出错原因,完全代码
- SpringBoot 整合 knife4j
- 《纵向切入ASP.NET 3.5控件和组件开发技术》笔记:高效率事件集合对象
- python查看数据类型type_python——获取数据类型:type()、isinstance()的使用方法:...
- 使用jquery判断及改变checkbox选中状态
- C语言编程中 提取运行时间的函数,C语言中用于修改文件的存取时间的函数使用...
- Ajax学习笔记-客户端模板引擎-9
- 面向过程编程和面向对象编程的区别
- jSignature网页手写签名
- pay.onzan.en app.php,IBOS 协同办公平台PHP版 v1.0
- ajax $.get怎么使用,jquery之ajax之$.get方法的使用
- 打开IDEA遇到:The license has been cancelled
- 成功真正需要什么:情商德商及体商 别高估智商
热门文章
- POJ - 2112 Optimal Milking(二分+二分图最大匹配-多重匹配(修改匈牙利实现)+Floyd求最短路)
- uva 10305拓扑排序
- MMDetection-运行时
- 安卓入门系列-05常见布局之RelaiveLayout(相对布局)
- 长链剖分:O(nlogn)预处理O(1)求kth祖先
- python网络编程实例简析
- 注入dll到一个进程里面
- 通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式)
- 解决IDEA本地仓库有jar包却无法引用和打包问题
- 恕我直言,IDEA的Debug,你可能只用了10%