freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../basic-algorithm-scripting/where-do-i-belong/index.md

13 KiB
Raw Blame History

title localeTitle
Where Do I Belong Где я принадлежу

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

Это может быть сложной проблемой для понимания. Вам нужно найти, где в массиве число должно быть вставлено по порядку и вернуть индекс, куда он должен идти.

Связанные ссылки

:speech_balloon: Подсказка: 1

Первое, что нужно сделать, это отсортировать массив от более низкого до большего, просто чтобы сделать код проще. Здесь происходит сортировка, ей нужна функция обратного вызова, поэтому вам нужно ее создать.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 2

После сортировки массива, просто проверьте первое число, которое больше, и верните индекс.

попытаться решить проблему сейчас

:speech_balloon: Подсказка: 3

Если для этого номера нет индекса, вам также придется иметь дело с этим делом.

попытаться решить проблему сейчас

Осторожно, спойлеры!

предупреждающий знак

Решение впереди!

:beginner: Решение базового кода:

function getIndexToIns(arr, num) { 
  arr.sort(function(a, b) { 
    return a - b; 
  }); 
 
  for (var a = 0; a < arr.length; a++) { 
    if (arr[a] >= num) 
      return a; 
  } 
 
  return arr.length; 
 } 

:rocket: Код запуска

Код Объяснение:

  • Сначала я сортирую массив, используя .sort(callbackFuntion) чтобы отсортировать его по наименьшему и наивысшему, слева направо.
  • Затем я использую цикл for для сравнения элементов в массиве, начиная с самого маленького. Когда элемент массива больше числа, с которым мы сравниваем, мы возвращаем индекс как целое число.

Связанные ссылки

:beginner: Решение базового кода:

function getIndexToIns(arr, num) { 
  // Find my place in this sorted array. 
  var times = arr.length; // runs the for loop once for each thing in the array 
  var count = 0; 
  for (var i=0;i<times;i++){ 
    if(num>arr[i]){count++;} } // counts how many array numbers are smaller than num 
    return count; // the above equals num's position in a sorted array 
 } 
 
 getIndexToIns([40, 60], 50); 

:rocket: Код запуска

Код Объяснение:

  • Я не сортирую массив arr arr
  • Я запускаю подсчет для цикла, когда числовой ввод больше, чем номер входа arr.
  • Это число эквивалентно тому, что позиция num будет в отсортированном массиве.

:beginner: Решение базового кода:

by @HarinaPana

function getIndexToIns(arr, num) { 
 
  arr.sort(function(a, b) { 
  return a - b; 
  }); 
 
  var i = 0; 
  while (num > arr[i]) { 
  i++; 
  } 
 
  return i; 
 } 
 
 getIndexToIns([40, 60], 50); 

:rocket: Код запуска

Код Объяснение:

  • Сортировка существующего массива.
  • Итерации через массив, проверяя, является ли num больше.
  • Цикл будет остановлен, когда число не больше i и вернет последний элемент.

:sunflower: Решение промежуточного кода:

by @faustodc

function getIndexToIns(arr, num) { 
  arr.push(num); 
  arr.sort(function(a, b){return ab}); 
  return arr.indexOf(num); 
 } 

:rocket: Код запуска

Код Объяснение:

  • Сначала мы добавляем число num в массив, используя push() который добавляет его как последний элемент массива.
  • Затем мы используем функцию sort() с функцией function(a, b){return ab} обратного вызова function(a, b){return ab} для сортировки чисел в порядке возрастания.
  • Наконец, мы возвращаем позицию или индекс num в массиве с помощью функции indexOf() .

Связанные ссылки

:sunflower: Решение промежуточного кода:

Использование .findIndex()

function getIndexToIns(arr, num) { 
  // sort and find right index 
  var index = arr.sort((curr, next) => curr > next) 
    .findIndex((currNum)=> num <= currNum); 
  // Returns proper answer 
  return index === -1 ? arr.length : index; 
 } 
 
 getIndexToIns([40, 60], 500); 

:rocket: Код запуска

Код Объяснение:

  • Сначала отсортируйте массив в порядке возрастания, в настоящее время это делается с использованием функций массива для минимального размера.
  • После сортировки массива мы непосредственно применяем .findIndex() где мы будем сравнивать каждый элемент в массиве, пока не найдем, где num <= currNum означает, где число, которое мы хотим вставить, меньше или равно текущему числу число в итерации.
  • Затем мы используем тройные операции, чтобы проверить, получил ли мы возвращенный индекс или -1 . Мы получаем только -1 когда индекс не был найден, когда мы получаем false для всех элементов int he array, и для такого случая это означало бы, что num должен быть вставлен в конце списка, поэтому мы используем arr.length ,

Связанные ссылки

:rotating_light: Расширенное решение для кода:

by @nivrith

function getIndexToIns(arr, num) { 
 
 return arr.concat(num).sort((a,b) => ab).indexOf(num); 
 
 } 
 
 getIndexToIns([1,3,4],2); 

:rocket: Код запуска

Код Объяснение:

  • Мы используем метод-цепочку для вызова одного метода за другим для решения проблемы в одной строке. Сначала мы объединяем arr и num , вызывая метод arr.concat (num)
  • Затем мы используем функцию sort() с функцией стрелки обратного вызова (a, b) => return ab для сортировки чисел в порядке возрастания
  • Наконец, мы возвращаем позицию или индекс num в массиве с помощью indexOf()

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Видеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.