如何解决如何在不重复求和元素的情况下多次遍历数组
我正在尝试解决此问题,但是我不知道为什么我无法通过所有测试用例。我需要一些帮助和解释,如何才能多次计数某个数组(在此示例中:变量s),而不重复已累加的相同元素。
问题描述:
Lily有一条巧克力棒,她想与Ron分享给他 生日。每个正方形上都有一个整数。她决定 共享所选条形的连续段,以使 该细分与Ron的出生月份和上的整数之和相匹配 平方等于他的生日。您必须确定多少 她如何划分巧克力的方式。
将巧克力棒视为正方形
s=[2,2,1,3,2]
的阵列。 她想找到汇总罗恩(Ron)出生日期d=4
的细分, 长度等于他的出生月份,m = 2。在这种情况下,有两个 符合她的条件的细分:[2,2]
和[1,3]
。功能说明
在下面的编辑器中完成生日功能。它应该返回 一个整数,表示莉莉可以除以巧克力的方式 酒吧。
生日具有以下参数:
我的代码:
function birthday(s,d,m) {
let bars = 0;
if (m !== 1) {
s.reduce((acc,val) => (acc+val) === d ? ++bars : bars)
} else {
bars = 1;
}
return bars;
}
某些情况:
-
s = [2、5、1、3、4、4、3、5、1、1、2、1、4、3、3、4、2、1]
-
d = 18
-
m = 7
-
s = [4、5、4、5、1、2、1、4、3、2、4、4、4、3、5、2、2、5、4、3、2、3 , 5,2,1,5,2,3,1,2,3,3,1,2,5]
-
d = 18
-
m = 6
-
s = [4、5、4、2、4、5、2、3、2、1、1、5、4]
-
d = 15
-
m = 4
我的代码与此兼容:
- s = [1、2、1、3、2]
- d = 3
- m = 2
可以在HackerRank>练习>算法>实现中找到
解决方法
每当遍历数组以求和或对其求数学方程,并且必须删除已经计算出的特定元素时,就可以使用这些内置函数之一从数组中删除元素使用特定的索引。 Array.prototype.slice() && Array.prototype.splice()
,您只需要将切片的长度切成m
,然后将其与d
进行比较
为slice
doc:
slice()
方法将数组的一部分的浅表副本返回到从start
到end
({ {1}}(不包括在内),其中end
和start
代表该数组中项目的索引。原始数组将不会被修改。
例如:
end
以下是可行的解决方案
s = [1,2,1,3,2]
m = 2
d = 3
// We loop through s with index stop at s.length - m + 1 for slice to be in correct range
// Slices:
i=0: [1,2] -> sum=3 -> res=0+1=1
i=1: [2,1] -> sum=3 -> res=1+1=2
i=2: [1,3] -> sum=4 -> do nothing
i=4: [3,2] -> sum=5 -> do nothing
,
这是嵌套循环的一种易于理解的方式:
new_predictions = log_reg.predict(normalised_test_df.iloc[:,2 ].values.reshape(177,-1,1))
cnf_mat = confusion_matrix(y_true=y_test,y_pred = new_predictions,labels=['2A','3A'])