如果数组中任意两个数字的乘法大于 26,则返回 true,否则返回 false

If any two numbers' multiplication in array is greater than 26 return true, otherwise false

提问人:vasif mammadov 提问时间:3/19/2023 更新时间:3/19/2023 访问量:220

问:

如果任意两个数字可以相乘,则返回字符串 true,以便答案大于数组中所有元素之和的两倍。如果没有,则返回字符串 false。

let arr = [2,2,2,2,4,1]
function SumMultiplier(arr) { 

  let sum = arr.reduce((acc, item) => acc +item,0)
  let trueStr = "true"
  let falseStr = "false"
  let double = sum*2
  let arrLength = arr.length
  let i = 0
  let j = 1
  while(i < arrLength){
    let multi = arr[i] * arr[j]
    if(double < multi) {
      j++
    }else{
      return trueStr
    }
  }
  return falseStr 

}

我发现数组中所有 elemets 的总和是两倍的,但无法解决数组中每个元素的乘法。

JavaScript 字典 比较

评论

3赞 tkausl 3/19/2023
您不需要将每个元素相乘为其他元素。只需找到两个最大的元素并将这两个元素相乘即可。

答:

0赞 Andrew 3/19/2023 #1

您可以在数组中找到最大的元素,将它们相乘,然后将结果与双倍的总和进行比较。

function SumMultiplier(arr) {
  const target = arr.reduce((acc, item) => acc + item, 0) * 2;
  const [largest, secondLargest] = findTwoLargest(arr)

  return largest * secondLargest > target ? "true" : "false"
}

function findTwoLargest(arr) {
  let largest = arr[0];
  let secondLargest = -Infinity;

  for (let i = 1; i < arr.length; i++) {
    if (arr[i] > largest) {
      secondLargest = largest;
      largest = arr[i];
    } else if (arr[i] > secondLargest && arr[i] < largest) {
      secondLargest = arr[i];
    }
  }

  return [largest, secondLargest];
}

console.log(SumMultiplier([2, 2, 2, 2, 4, 1]))

0赞 Darth_Axel 3/19/2023 #2

假设你不在乎数字是否乘以本身,尝试使用嵌套循环,这更容易。通过这种方式,您可以将每个元素与其他元素(包括其自身)进行检查。

像这样:

for (var i = 1; i < arr.length; i++) {

   for (var j = 1; j < arr.length; j++) {

       if(arr[i] * arr[j] > sumDouble){

            return 'true';
       }
   }
}
0赞 ΑΓΡΙΑ ΠΕΣΤΡΟΦΑ 3/19/2023 #3

@tkausl

let arr = [2,2,2,2,4,1]

function SumMultiplier(arr) {
   let sum = arr.reduce((partialSum, a) => partialSum + 2*a, 0);
   let b = arr.slice(0).sort((e1, e2) => e2 - e1)
   let r = b[0] * b[1]
   return (r > sum) ? "true": "false"
}

@Nina Scholz coment 之后,将 sort() 修改为 sort((e1, e2) => e1 - e2)

@tatactic coment => sort((e1, e2) => e2 - e1)

评论

0赞 Nina Scholz 3/19/2023
尝试使用 AS 值进行排序...10
0赞 ΑΓΡΙΑ ΠΕΣΤΡΟΦΑ 3/19/2023
sort() 排序为字符串...
0赞 tatactic 3/19/2023
@ΑΓΡΙΑΠΕΣΤΡΟΦΑ阅读: w3schools.com/jsref/jsref_sort.asp 学习如何对数字进行排序