2023-03-16:给定一个由 0 和 1 组成的数组 arr ,将数组分成 3 个非空的部分,
使得所有这些部分表示相同的二进制值。...,
arrj, arrj + 1, ..., arrarr.length - 1 为第三部分,
这三个部分所表示的二进制值相等,
如果无法做到,就返回 -1, -1。...此外,前导零也是被允许的,
所以 0,1,1 和 1,1 表示相同的值。
输入:arr = 1,0,1,0,1,
输出:0,3。
输入:arr = 1,1,0,0,1,
输出:0,2。...如果无法做到则返回 -1, -1。
解法思路:
首先统计整个数组中 1 的数量 ones,如果 ones 不能被 3 整除,则说明无法分成三个相等的部分,直接返回 -1, -1。...接下来检查第三个部分是否也等于目标值 part。如果是,则返回 end1, end2,否则返回 -1, -1。
rust代码实现:
fn main() {
let arr1 = vec!