Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Найти пропущенное число в массиве
- */
- // Число, возвращаемое функцией - 8
- var array = [2, 5, 1, 4, 9, 6, 3, 7];
- // вариант не рабоатает на массиве [12,24,36,60] и похожих, только [1 - 12]
- function missingNumber(arr) {
- let max = Math.max.apply(Math, intArray);
- let min = Math.min.apply(Math, intArray);
- // Проходим через массив и находим сумму чисел
- let sum = arr.reduce((acc, val) => acc += val);
- /* Находим теоретическую сумму последовательных чисел, используя вариацию суммы Гаусса*/
- // Формула: [(N * (N + 1)) / 2] - [(M * (M - 1)) / 2];
- // N - верхняя граница, а M - нижняя граница
- upperLimitSum = (max * (max + 1)) / 2;
- lowerLimitSum = (min * (min - 1)) / 2;
- let theoreticalSum = upperLimitSum - lowerLimitSum;
- return theoreticalSum - sum;
- }
- //var intArray = [15,10,12,14,13]; // Missing 2,6
- //var intArray = [9,1,5,8,7,4,3,0,10,13,15,19,12,16,18]; // Missing 2,6,11,14,17
- // находит все потерянные числа на любом массиве, но находит все числа с разницей 1
- function missingNumber(arr) {
- var max = Math.max.apply(Math, intArray);
- var min = Math.min.apply(Math, intArray);
- var missing = []
- for ( var i = min; i < max; i++ ) {
- if ( intArray.indexOf(i) < 0 ) {
- missing.push( i );
- }
- }
- return missing
- }
- console.log(missingNumber(array))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement