当前位置: 首页 > 知识库问答 >
问题:

将数组拆分为相等和的相等连续子数组

轩辕啸
2023-03-14

我想检查是否可以将一个数组拆分为具有相同和的连续子数组。拆分数组还意味着删除数组的边框元素。

例如,要将其拆分为3个部分,我们需要删除到元素

myArray = [2, 4, 5, 3, 3, 3, 2, 1, 3]
                 ^        ^

通过删除这2个元素,就有3个相同和的连续子数组[2,4][3,3][2,1,3]

因此,如果可以将数组拆分为3个部分(等和)并删除它们之间的边界,则应返回true,否则应返回false。

返回false的示例是[1,1,1,1,1,1]。因为删除2个元素后,它将有4个1元素,这些元素不能分组为3个相等的和

我不知道如何处理这个问题,任何建议都是有帮助的。

共有2个答案

鲁德佑
2023-03-14

我会这样做。

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);
和丰羽
2023-03-14

您可以将左侧和右侧的值相加,如果相等,则得到其余值的和,并检查此值是否等于其中一个边。

如果不是,则在左侧添加一个值。

function check(array) {
    var i = 0,
        j = array.length - 1,
        left = array[i++],
        right = array[j--];

    while (i < j) {
        if (left < right) { left += array[i++]; continue; }
        if (left > right) { right += array[j--]; continue; }
        if (array.slice(i + 1, j).reduce((a, b) => a + b, 0) === left) return true;
        left += array[i++];
    }
    return false;
}

console.log(check([2, 4, 5, 3, 3, 3, 2, 1, 3]));
console.log(check([1, 1, 1, 1, 1, 1]));
 类似资料:
  • 问题内容: 当每个块的总和大致相等时,如何将数组分成两个块? 问题答案: 像这样: 测试:

  • 我想把一个数分解成一个大小尽可能接近的数元组,其乘积就是初始数。输入是我们想要的因子数和所需因子数。 对于双因子情况(),寻找小于平方根的最大因子就足够了,所以我可以做这样的事情 所以用调用它将导致。 我意识到,这些数字“在大小上彼此接近”意味着什么,存在一些模糊性。我不介意这被解释为最小化∑(x\u I-x\u avg)或∑(x\u I-x\u avg)^2或其他类似的东西。 对于m==3的情况

  • 我在一次采访中被问到这个问题。给定一个整数数组(具有正值和负值),我们需要找到具有相等总和的不相交子数组的最大数量。 例子: 输入:[1,2,3]输出:2{因为我们最多有2个子数组,总和=3,即[1,2],[3]} 输入: [2 2 2 -2] 输出 : 2 {两个子数组,每个子数组的总和 = 2,即 [2],[2, 2, -2]} 我的方法 我想到的第一种方法是找到前缀和数组,然后以每个元素(前

  • 我正在寻找一个算法,可以分裂整数数组尽可能多的子数组与X的和。我试图创建数组从hi到low,但最后我只剩下2的束,不可能创建子集与奇数和。 [7,4]和剩余。

  • 我有一个具有相同键值uid的多维数组。我想把它转换成子数组通过限制Foreachloop.you可以看到两个uid有值100和两个uid有值5465 我想得到这样的阵列。 我可以不使用foreach循环得到结果吗?

  • 问题内容: 无论如何,有没有将ArrayList拆分成不同的部分,直到运行时才知道它的大小?我知道有一种方法叫做: 但我们需要明确提及列表的起始和结束范围。我的问题是,我们得到一个包含帐号的数组列表,该数组具有类似2000,4000个帐号的数据(在编码期间不会知道这些数字),我需要将此帐号传递给PL / SQL的IN查询,如下IN不支持超过1000个值,我试图将其拆分成多个块并将其发送给查询 注意