Cum de a găsi cele mai mari trei numere într-o matrice?

0

Problema

Salut vreau sa gasesc cele mai mari trei numere într-o matrice de ORDINE. Sunt confuz cum am ar trebui să pună în aplicare ultima logica în cazul în care am avea de a schimba indicilor tabloului rezultat bazat pe dacă numărul curent în rezultatul matrice este mai mare sau mai mică decât bucla de matrice de elemente.

    function findThreeLargestNumbers(array) {
  let result = [null, null, null];
  for (let i = 0; i < array.length; i++) {
    if (!result[2] || result[i] > result[2]) {
      for (let j = 0; i <= 2; i++) {
        if (j === 2) {
          result[j] = array[i]
        } else {
          result[j] = array[i + 1]
        }
      }
    }
  }
  return result
}


console.log(findThreeLargestNumbers([141, 1, 17, -7, -17, -27, 18, 541, 8, 7, 7]));
algorithm javascript
2021-11-24 00:43:28
1

Cel mai bun răspuns

2

Puteți pur și simplu sort în ordine crescătoare și de a folosi slice pentru a obține ultima 3 elemente ca:

1) atunci Când doriți rezultatul în ultimele 3 mai mari, în ordine crescătoare [18, 141, 541]

function findThreeLargestNumbers(array) {
  return [...array].sort((a, b) => a - b).slice(-3);
}

// [18, 141, 541]
console.log(findThreeLargestNumbers([141, 1, 17, -7, -17, -27, 18, 541, 8, 7, 7]));

2) atunci Când doriți rezultatul în ultimele 3 mai mari, în ordine descrescătoare [541, 141, 18]

function findThreeLargestNumbers(array) {
  return [...array].sort((a, b) => b - a).slice(0, 3);
}

console.log(findThreeLargestNumbers([141, 1, 17, -7, -17, -27, 18, 541, 8, 7, 7]));

2021-11-24 00:50:39

Chiar mai bine pentru a clona matrice și pentru a obține ultimele 3 număr. BTW multumesc EDITAT
decpk

pentru a clona matrice ai folosi răspândit operator sau pentru buclă și împinge să array gol?
dev

@dev ... nu este operator este răspândit în sintaxă. Aș merge pentru spread sintaxa...
decpk

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................