验证中...
算法.js
原始数据 复制代码
// 1、回文。
// 回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生收尾回环的情况,也叫回环。如:mamam,redivider.
// 实现回文不是我们最常用到的for循环,而是reverse的运用。将字符串转化为数组,将数组顺序颠倒后,再转化为字符串,这个过程就实现的回文。
// 代码的实现:
function back(str){
return str== str.split('').reverse().join('');
}
// 2、去掉一组整型数组中重复的值
// 比如输入: [1,13,24,11,11,14,1,2]
// 输出: [1,13,24,11,14,2]
// 需要去掉重复的11 和 1 这两个元素
// 这道题在面试的试题中出现率比较高,主要考察个人对object的使用,利用key来进行筛选。
// js的实现代码:
let unique = function(arr){
let hash={};
let data=[];
for (let i=0;i<arr.length;i++){
if (!hash[arr[i]]) {
hash[arr[i]]=true;
data.push(arr[i]);
}
}
return data
}
// 3、统计一个字符串中出现最多的字母
// 给出一个字符串,统计出现次数最多的字母。如:“wqeqwhixswiqhdxsq”,其中出现最多的是q.
// js算法的实现
function findMax(str){
if (str.length ==1){
return str;
}
let charObj = {};
for (let i=0;i<str.length;i++) {
if(!charObj[str.charAt(i)]){
charObj[str.charAt(i)]=1;
} else{
charObj[str.charAt(i)]+=1;
}
}
let maxChar='',
maxValue=1;
for (var k in charObj){
if (charObj[k]>=maxValue){
maxChar=k;
maxValue = charObj[k];
}
}
return maxChar;
}
// 4、顺序算法
// a、冒泡排序
function mao(arr){
for (let i = 0; i < arr.length - 1;i++){
for(let j=0;j<arra.length-i-1; j++){
if (arr[i]>arr[j]){
let tem =arr[i];
arr[i]=arr[j];
arr[j] =tem;
}
}
}
return arr;
}
// b、快速排序(快排)
function quick(arr){
if (arr.length<=1){
return arr;
}
let leftArr=[];
let rightArr=[];
let q=arr[0];
for(let i=1; i<arr.length;i++){
if (arr[i]>q){
rightArr.push(arr[i]);
} else{
leftArr.push(arr[i]);
}
}
return [].concat(quick(leftArr),[q],quick(rightArr));
}
// 5、不需要借助第三个临时变量,实现两个变量的交换
// js实现方法:
function swap(a,b) {
b=b-a;
a=a+b;
b=a-b;
return [a,b];
}
// 6、斐波那契数列
// js的实现方法
function getFib(n){
var fibairr =[];
var i=0;
while(i<n) {
if (i<=1){
fibarr.push(i);
} else{
fibarr.push(fibarr[i-1])
}
i++;
}
return fibarr;
}
// 7、找出下列正整数组的最大差值
// 输入的数组是[10,5,11,7,8,9]
// 输出 6
// js的实现方法:
function getMaxPro(arr){
var minPrice=arr[0];
var maxProfit=0;
for (var i=0;i<arr.length;i++){
var currentPrice=arr[i];
minPrice=Math.min(minPrice,currentPrice);
var potentialProfit =currenrPrice-minPrice;
maxProfit=Math.max(maxProfit,potentialProfit);
}
return maxProfit;
}
// 8、随机生成指定长度的字符串
// 比如指定的长度为8
// js的实现方法:
function random(n){
let str='abcdefghijkmnopqrstuvwxyz9876543210';
let tmp='',
i=0,
l=str.length;
for(i=0;i<n;i++){
tmp +=str.charAt(Math.floor(Math.random()*l))
}
return tmp;
}

评论列表( 0 )

你可以在登录后,发表评论

搜索帮助