Javascript 迭代数组并查找一系列数字之间的和
例如,如果我传递数字10和数组Javascript 迭代数组并查找一系列数字之间的和,javascript,arrays,Javascript,Arrays,例如,如果我传递数字10和数组[1,2,4,4],如果数组是[4,2,1,1],函数应该返回false,因为总和不在两个数字之间。我会像这样不递归地求解它,只需在元素和下一个元素上循环,并在找到解决方案后立即退出循环: 函数解决方案(n,arr){ 如果(n
[1,2,4,4]
,如果数组是[4,2,1,1]
,函数应该返回false,因为总和不在两个数字之间。我会像这样不递归地求解它,只需在元素和下一个元素上循环,并在找到解决方案后立即退出循环:
函数解决方案(n,arr){
如果(n<0)返回null;
如果(n==0)返回[];
对于(变量i=0;i log(解决方案(8,[-1,2,3,4])代码>检查两个数字之和的简单实现是一个嵌套循环,请参见以下内容:
function isSumInArray(sum, array) {
for (let i=0; i < array.length; i++) {
for (let j=0; j < array.length; j++) {
if (array[i] + array[j] === sum && i !== j) {
return true
}
}
}
return false;
}
函数isSumInArray(和,数组){
for(设i=0;i
有更好的方法来实现这一点,但我选择它是因为我认为这是最简单的理解。在这里,您将遍历数组两次,如果这两个数字等于所需的和(并且它们在数组中不是相同的数字),则返回true。如果没有任何组合满足此条件,则返回false 使用和函数检查给定数组中任意两个数字的和是否等于传递的参数-请参阅下面的演示:
函数解决方案(num,数组){
返回数组.some(函数(e,i){
return(num-e+array.find)(函数(c,k){
返回c==e&&i!=k
}))==num;
});
}
log(解决方案(8,[-1,2,3,4]),解决方案(8,[-1,4,3,4]),解决方案(8,[4,3,45,2,5,3])数组中任意两个数字的代码>
功能测试(数组,n)
{
对于每个元素的(var i=0;i,您需要对每个其他元素进行“计算”,以查看它们的总和是否正确
最简单的实现是嵌套循环O(N^2)
伪代码:
def solution(list, target)
for each element e1 in list
for each element e2 in list
if e2 is e1
continue
end if
if e1 + e2 is target
return true
end if
loop
loop
return false
end def
代码:
功能解决方案(列表、目标){
for(设i=0;i 控制台日志(解决方案([1,2,3,4,5],2))
任意两个数字,或两个相邻的数字?同样,递归是一个要求吗?任意两个@mHodges我们可以得到解释如何得到正确答案的答案吗?另外,我想指出的是,你的函数应该只返回一个类型
。如果我使用它,我希望返回一个布尔值,而不是null或数组。我认为如果您先对数组排序,然后尝试匹配,这可能会更有效。如果时间复杂,这可能会导致更好的方法。您可以从I+1而不是0开始j,以避免重复,例如:[1,2,3,4],当您用2检查1时,无需再次用1检查2。