有时候突然来了兴趣想练习下算法题,以下的算法题都是从各种博客和coderbyte上找来的。
coderbyte上的题目还是挺有意思的 (๑•̀ㅂ•́)و✧
虽然这些题目都比较基础,不过也有好些做不出来的,或者做出来了想的也有点复杂来着 ━( ̄ー ̄*|||━━
数组去重
这是很经典的算法题了。最开始我是这样写的:
1 | var arr = [1,2,24,1,14,2,13]; |
但是这样写有比较复杂,后来我改成了这样:
1 | function removal(arr){ |
还有一种方法:
1 | function removal(arr){ |
附上网上看到的用ES6新特性Set去重:
1 | function remove2(arr){ |
判断字符串是否是回文
比如:redivider是回文
1 | var str = "redivider"; |
字符串中出现最多的字母
比如:”afjghdfraaaasdenas”
1 | var str1 = "afjghdfraaaasdenas"; |
网上看到的其他方法:
1 | function findMaxDuplicateChar(str) { |
冒泡排序
1 | function bubbleSort(arr) { |
生成指定长度的斐波那契数列
例如:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]…
1 | function drawfeibo(l){ |
获取正数组的最大差值
比如数组[10,5,11,7,8,9],输出6
1 | function getDvalue(arr){ |
随机生成指定长度的字符串
比如:给定长度 8 输出 4ldkfg9j
1 | function getStr(l){ |
网上看到的其他方法:
1 | function randomString(n) { |
字符的左右移动
给定一个字符串,这个字符串为号和26个字母的任意组合。现在需要把字符串中的号都移动到最左侧,而把字符串中的字母移到最右侧并保持相对顺序不变。
1 | var str = 'sosunn**afns*repsni*'; |
网上看到的其他方法:
1 | function sortstring(stars){ |
在一个字符串中找到第一个只出现一次的字符
如输入abaccdefbf,则输出d
我开始是这样想的:
1 | function getfirstchar(str){ |
不过后来感觉我的时间复杂度比较高,这是网上看到的其他方法:
1 | var str = 'abaccdefbf'; |
返回句子中第一次出现的最长的单词
比如:’I love dogs ss’,返回 love;’fub&!!time’,返回time
1 | function LongestWord(sen) { |
从数组中移除
比如:destroyer([[1, 2, 3, 1, 2, 3], 2, 3]),输出[1,1]
1 | function destroyer(array){ |
输出一个数字的二进制中1的个数
1 | function geterjinzhi(num){ |
ArrayAdditionI
Have the function ArrayAdditionI(arr) take the array of numbers stored in arr and return the string true if any combination of numbers in the array can be added up to equal the largest number in the array, otherwise return the string false. For example: if arr contains [4, 6, 23, 10, 1, 3] the output should return true because 4 + 6 + 10 + 3 = 23. The array will not be empty, will not contain all the same elements, and may contain negative numbers.
比如: ArrayAddition([1, 22, 23, 25, 26]), 输出true,
ArrayAddition([1, 22, 23, 24, 27, 29, 33]), 输出false,
ArrayAddition([4, 6, 23, 10, 1, 3]), 输出true
这是很久之前写的代码,写的很复杂,我也不是很理解当时的脑回路了= = 大概类似于排列组合吧
1 | function ArrayAddition(arr){ |
全排列
比如:if num = 4, return (4 * 3 * 2 * 1))
1 | function FirstFactorial(num){ |
输入分钟输出时间显示
return the number of hours and minutes the parameter converts to (ie. if num = 63 then the output should be 1:3).
1 | function TimeConvert(num) { |
return the string with the letters in alphabetical order
比如:ie. hello becomes ehllo.
1 | function AlphabetSoup(str){ |
the string to be true each letter must be surrounded by a + symbol
1 | function simplesymbols(str){ |
capitalize the first letter of each word
1 | function lettercapitalize(str){ |
判断是不是质数
1 | function isPrime(num){ |
在刚刚的方法基础上获取质数因子
1 | function primeFactors(num){ |
最大公约数
1 | function greatestCommonDivisor(num1,num2){ |
输入两个数组,得到不在另一个数组中的值组成的新数组
列如:[1, 2, 3, 5], [1, 2, 3, 4, 5] return [4]
[1, “calf”, 3, “piglet”],[1, “calf”, 3, 4] return [“piglet”,’4]
1 | function getUniqueFromnArr(arr1,arr2){ |
另一个方法:
1 | function diff(arr1, arr2) { |
判断两个Object是不是相等
1 | function ObjectEqual(obj1,obj2){ |
网上看到的另一个方法:
1 | function where(collection, source) { |
找到字符串中缺失的字母
1 | function fearNotLetter(str){ |
另一个方法:
1 | function fearNotLetter(str) { |
获取多个数组的组合数组并去重
比如:getSortAndUniteArr([1, 3, 2], [5, 2, 1, 4], [2, 1]) return [1, 3, 2, 5, 4]
1 | function getSortAndUniteArr(arr1,...arr3){ |
网上看到的另一个方法:
1 | function unite(arr1, arr2, arr3) { |


