Сегодня я собираюсь обсудить наиболее важные алгоритмы JavaScript и структуры данных. Итак, я надеюсь, что здесь вы узнаете важные вещи. Итак, начнем.
# 01: Проверить простое число
Как мы знаем, простое число делится только на себя и 1. Вот пример →
function isPrime(n){ var divisor = 2;
while (n > divisor){ if(n % divisor == 0){ return false; } else divisor++; } return true; }
> isPrime(137); = true > isPrime(237); = false
# 02: Основные факторы
Временная сложность простых факторов равна O (n). Вот пример →
function primeFactors(n){ var factors = [], divisor = 2; while(n>2){ if(n % divisor == 0){ factors.push(divisor); n= n/ divisor; } else{ divisor++; } } return factors; }
> primeFactors(69); = [3, 23]
# 03: Число Фибоначчи
Вот пример и временная сложность O (n).
function fibonacci(n){ var fibo = [0, 1]; if (n <= 2) return 1;
for (var i = 2; i <=n; i++ ){ fibo[i] = fibo[i-1]+fibo[i-2]; }
return fibo[n]; }
> fibonacci(12); = 144
С рекурсивным и его сложностью: O (2 ^ n).
function fibonacci(n){ if(n<=1) return n; else return fibonacci(n-1) + fibonacci (n-2); }
> fibonacci(12); = 144
# 04: Наибольший общий делитель (НОД)
Вот пример GCD →
function greatestCommonDivisor(a, b){ var divisor = 2, greatestDivisor = 1;
//if u pass a -ve number this will not work. fix it dude!! if (a < 2 || b < 2) return 1; while(a >= divisor && b >= divisor){ if(a %divisor == 0 && b% divisor ==0){ greatestDivisor = divisor; } divisor++; } return greatestDivisor; }
> greatestCommonDivisor(14, 21); =7 > greatestCommonDivisor(69, 169); = 1
# 05: Удалить дубликаты
В этом примере показано, как удалить повторяющиеся числа из массива. Пример →
function removeDuplicate(arr){ var exists ={}, outArr = [], elm;
for(var i =0; i<arr.length; i++){ elm = arr[i]; if(!exists[elm]){ outArr.push(elm); exists[elm] = true; } } return outArr; }
> removeDuplicate([1,3,3,3,1,5,6,7,8,1]); = [1, 3, 5, 6, 7, 8]
# 06: Палиндром
Здесь я объяснил, как мы можем перевернуть строку. Итак, вот пример →
function reverse(str){ var rtnStr = ''; for(var i = str.length-1; i>=0;i--){ rtnStr +=str[i]; } return rtnStr; }
> reverse('you are a nice dude'); = "edud ecin a era uoy"
Другой пример: →
function reverse(str){
var rtnStr = [];
if(!str || typeof str != 'string' || str.length < 2 ) return str;
for(var i = str.length-1; i>=0;i--){
rtnStr.push(str[i]);
}
return rtnStr.join('');
}
# 07: Проверьте палиндром
В этом методе мы можем проверить, палиндром или нет. Вот пример →
function isPalindrome(str){ var i, len = str.length; for(i =0; i<len/2; i++){ if (str[i]!== str[len -1 -i]) return false; } return true; }
> isPalindrome('madam') = true > isPalindrome('toyota') = false
# 08: Удалить повторяющиеся символы
Здесь я объяснил, как удалить повторяющиеся символы из строки? Пример: →
function removeDuplicateChar(str){ var len = str.length, char, charCount = {}, newStr = []; for(var i =0; i<len; i++){ char = str[i]; if(charCount[char]){ charCount[char]++; } else charCount[char] = 1; } for (var j in charCount){ if (charCount[j]==1) newStr.push(j); } return newStr.join(''); }
> removeDuplicateChar('Learn more javascript dude'); = "Lnmojvsciptu"
# 09: Случайно от 5 до 7
Вот пример →
function rand5(){ return 1 + Math.random() * 4; }
function rand7(){ return 5 + rand5() / 5 * 2; }
# 10: Перестановки
Это может быть сложно, исходя из вашего уровня знаний об алгоритме.
function permutations(str){ var arr = str.split(''), len = arr.length, perms = [], rest, picked, restPerms, next;
if (len == 0) return [str];
for (var i=0; i<len; i++) { rest = Object.create(arr); picked = rest.splice(i, 1);
restPerms = permutations(rest.join(''));
for (var j=0, jLen = restPerms.length; j< jLen; j++) { next = picked.concat(restPerms[j]); perms.push(next.join('')); } } return perms; }
Сегодня больше нет. Если вы хотите узнать больше, поищите в Google и продолжайте учиться. Если я допущу ошибку, сообщите мне. Я сделаю все возможное, чтобы решить эту проблему. Всем спасибо.