javascript - 将一个数组拆分为相等和的相等连续子数组
问题描述
我想检查是否可以将数组拆分为具有相同总和的连续子数组。拆分数组也意味着删除它的边框元素。
例如,要将它分成 3 个部分,我们需要删除元素
myArray = [2, 4, 5, 3, 3, 3, 2, 1, 3]
^ ^
通过删除这 2 个元素,有 3 个连续子数组具有相同的 sum[2, 4]
和.[3, 3]
[2, 1, 3]
因此,如果可以将数组分成 3 部分(总和相等)并删除它们之间的边界 - 它应该返回 true,否则它应该返回 false。
一个会返回的例子false
是[1, 1, 1, 1, 1, 1]
. 因为在删除 2 个元素后,它将有 4 个元素1
不能归为 3 个相等的总和
我不知道如何解决这个问题,任何建议都是有帮助的。
解决方案
我会做这样的事情。
myArray = [2, 4, 5, 3, 3, 3, 2, 1, 3];
var x = []; //result if sub-arrays
var i = 0;
while(i< myArray.length-3){
x.push([myArray[i],myArray[i+1]])
i = i+3;
};
var a =[]; //remaining element
for(var k =i; k<myArray.length;k++){
a.push(myArray[k]);
}
x.push(a)
console.log(x);
var sum =x[0].reduce((a, b) => a + b, 0);
var returnTrue = true;
for(var k=1; k<x.length; k++){
var sumAnother = x[k].reduce((a, b) => a + b, 0);
if(sumAnother!== sum){
returnTrue = false;
break;
}
}
console.log(returnTrue);
推荐阅读
- css - 当父 div 使用 display:flex 属性时,向孩子显示地图宽度和高度 100%
- javascript - 用javascript检查复选框后如何验证“textarea”
- mysql - “ON DUPLICATE KEY UPDATE”不适用于多列
- json - 在 Asp.net MVC 中使用图表 JS
- matlab - 如何从代码创建的按钮调用另一个按钮的回调
- android - 如何检查我是在 ionic 3 的地理围栏区域进入还是退出
- vue.js - 如何使用 Mocha 和 Chai 测试 Vuex 模块
- php - 如何正确设置虚拟主机
- java - 创建 HttpsSession 时如何更改 DefaultSessionTrackingModes
- azure-devops - 如何在 Azure Pipelines YAML 构建定义中接收修订