题目

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)相关推荐

  1. 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 ...

  2. 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 ...

  3. LeetCode 09:回文数(Java实现)

    LeetCode 09:回文数(Java实现) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输 ...

  4. [LeetCode]187. 重复的DNA序列(java实现)暴力 + 哈希

    [LeetCode]187. 重复的DNA序列(java实现) 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总结 1. ...

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

    题目:力扣 给定一个由 0 和 1 组成的数组 arr ,将数组分成  3 个非空的部分 ,使得所有这些部分表示相同的二进制值. 如果可以做到,请返回任何 [i, j],其中 i+1 < j,这 ...

  6. [Swift]LeetCode927. 三等分 | Three Equal Parts

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  7. leetcode 416. Partition Equal Subset Sum | 416. 分割等和子集(Java)

    题目 https://leetcode.com/problems/partition-equal-subset-sum/ 题解 乍一看是背包问题,但不同的是,本题要求结果等于某值,背包要求结果小于某值 ...

  8. LeetCode 674. Longest Continuous Increasing Subsequence--python,Java,C++解法

    此题链接:Longest Continuous Increasing Subsequence - LeetCode Given an unsorted array of integers, find ...

  9. 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 ...

最新文章

  1. Oracle Export方式数据库备份和恢复(一)
  2. 【动态规划】装箱问题
  3. C#——语言基础 之 运算符!
  4. Windows 10 LTSC添加UWP支持
  5. if you are alone with your mac connected to Internet
  6. PDF Reader
  7. OXY OPENCART 商城自适应主题模板 ABC-0020-05
  8. my_atio()代码出错原因,完全代码
  9. SpringBoot 整合 knife4j
  10. 《纵向切入ASP.NET 3.5控件和组件开发技术》笔记:高效率事件集合对象
  11. python查看数据类型type_python——获取数据类型:type()、isinstance()的使用方法:...
  12. 使用jquery判断及改变checkbox选中状态
  13. C语言编程中 提取运行时间的函数,C语言中用于修改文件的存取时间的函数使用...
  14. Ajax学习笔记-客户端模板引擎-9
  15. 面向过程编程和面向对象编程的区别
  16. jSignature网页手写签名
  17. pay.onzan.en app.php,IBOS 协同办公平台PHP版 v1.0
  18. ajax $.get怎么使用,jquery之ajax之$.get方法的使用
  19. 打开IDEA遇到:The license has been cancelled
  20. 成功真正需要什么:情商德商及体商 别高估智商

热门文章

  1. POJ - 2112 Optimal Milking(二分+二分图最大匹配-多重匹配(修改匈牙利实现)+Floyd求最短路)
  2. uva 10305拓扑排序
  3. MMDetection-运行时
  4. 安卓入门系列-05常见布局之RelaiveLayout(相对布局)
  5. 长链剖分:O(nlogn)预处理O(1)求kth祖先
  6. python网络编程实例简析
  7. 注入dll到一个进程里面
  8. 通过google app engine 在google cloud 部署支持quic的Java web 应用(多种方式)
  9. 解决IDEA本地仓库有jar包却无法引用和打包问题
  10. 恕我直言,IDEA的Debug,你可能只用了10%