13 KiB
title | localeTitle |
---|---|
Where Do I Belong | Где я принадлежу |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
Это может быть сложной проблемой для понимания. Вам нужно найти, где в массиве число должно быть вставлено по порядку и вернуть индекс, куда он должен идти.
Связанные ссылки
Подсказка: 1
Первое, что нужно сделать, это отсортировать массив от более низкого до большего, просто чтобы сделать код проще. Здесь происходит сортировка, ей нужна функция обратного вызова, поэтому вам нужно ее создать.
попытаться решить проблему сейчас
Подсказка: 2
После сортировки массива, просто проверьте первое число, которое больше, и верните индекс.
попытаться решить проблему сейчас
Подсказка: 3
Если для этого номера нет индекса, вам также придется иметь дело с этим делом.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
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;
}
Код Объяснение:
- Сначала я сортирую массив, используя
.sort(callbackFuntion)
чтобы отсортировать его по наименьшему и наивысшему, слева направо. - Затем я использую цикл for для сравнения элементов в массиве, начиная с самого маленького. Когда элемент массива больше числа, с которым мы сравниваем, мы возвращаем индекс как целое число.
Связанные ссылки
Решение базового кода:
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);
Код Объяснение:
- Я не сортирую массив arr arr
- Я запускаю подсчет для цикла, когда числовой ввод больше, чем номер входа arr.
- Это число эквивалентно тому, что позиция num будет в отсортированном массиве.
Решение базового кода:
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);
Код Объяснение:
- Сортировка существующего массива.
- Итерации через массив, проверяя, является ли num больше.
- Цикл будет остановлен, когда число не больше i и вернет последний элемент.
Решение промежуточного кода:
by @faustodc
function getIndexToIns(arr, num) {
arr.push(num);
arr.sort(function(a, b){return ab});
return arr.indexOf(num);
}
Код Объяснение:
- Сначала мы добавляем число
num
в массив, используяpush()
который добавляет его как последний элемент массива. - Затем мы используем функцию
sort()
с функциейfunction(a, b){return ab}
обратного вызоваfunction(a, b){return ab}
для сортировки чисел в порядке возрастания. - Наконец, мы возвращаем позицию или индекс
num
в массиве с помощью функцииindexOf()
.
Связанные ссылки
Решение промежуточного кода:
Использование .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);
Код Объяснение:
- Сначала отсортируйте массив в порядке возрастания, в настоящее время это делается с использованием функций массива для минимального размера.
- После сортировки массива мы непосредственно применяем
.findIndex()
где мы будем сравнивать каждый элемент в массиве, пока не найдем, гдеnum <= currNum
означает, где число, которое мы хотим вставить, меньше или равно текущему числу число в итерации. - Затем мы используем тройные операции, чтобы проверить, получил ли мы возвращенный индекс или
-1
. Мы получаем только-1
когда индекс не был найден, когда мы получаем false для всех элементов int he array, и для такого случая это означало бы, чтоnum
должен быть вставлен в конце списка, поэтому мы используемarr.length
,
Связанные ссылки
Расширенное решение для кода:
by @nivrith
function getIndexToIns(arr, num) {
return arr.concat(num).sort((a,b) => ab).indexOf(num);
}
getIndexToIns([1,3,4],2);
Код Объяснение:
- Мы используем метод-цепочку для вызова одного метода за другим для решения проблемы в одной строке. Сначала мы объединяем
arr
иnum
, вызывая метод arr.concat (num) - Затем мы используем функцию
sort()
с функцией стрелки обратного вызова(a, b) => return ab
для сортировки чисел в порядке возрастания - Наконец, мы возвращаем позицию или индекс
num
в массиве с помощьюindexOf()
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Видеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.