js 常用演算法總結

2021-09-25 02:25:19 字數 3344 閱讀 6057

1、判斷乙個單詞是否是回文?

回文是指把相同的詞彙或句子,在下文中調換位置或顛倒過來,產生首尾回環的情趣,叫做回文,也叫回環。比如 mamam redivider .

很多人拿到這樣的題目非常容易想到用for 將字串顛倒字母順序然後匹配就行了。其實重要的考察的就是對於reverse的實現。其實我們可以利用現成的函式,將字串轉換成陣列,這個思路很重要,我們可以擁有更多的自由度去進行字串的一些操作。

function checkpalindrom(str)
2、去掉一組整型陣列重複的值

比如 輸入: [1,13,24,11,11,14,1,2],  輸出: [1,13,24,11,14,2] ,需要去掉重複的11 和 1 這兩個元素。

主要考察個人對object的使用,利用key來進行篩選。

let unique = function(arr) ;

let data = ;

for(let i=0,i3、統計乙個字串出現最多的字母

給出一段英文連續的英文本串,找出重複出現次數最多的字母

比如:輸入:afjghdfraaaasdenas  輸出 : a

前面出現過去重的演算法,這裡需要是統計重複次數。

function findmaxduplicatechar(str)

let charobj = {};

for(let i=0;i= maxvalue)

} return maxchar;

}

4、排序演算法

如果說到演算法題目的話,應該大多都是比較開放的題目,不限定演算法的實現,但是一定要求掌握其中的幾種,所以氣泡排序,這種較為基礎並且便於理解記憶的演算法一定需要熟記於心。氣泡排序演算法就是依次比較大小,小的的大的進行位置上的交換。

function bubblesort(arr) }}

return arr;

}

其他排序 :快速排序

function quicksort(arr) 

let leftarr = ;

let rightarr = ;

let q = arr[0];

for(let i = 1,l=arr.length; iq) else

}return .concat(quicksort(leftarr),[q],quicksort(rightarr));

}

5、不借助臨時變數,進行兩個整數的交換

舉例:輸入 a = 2, b = 4 輸出 a = 4, b =2

這種問題非常巧妙,需要大家跳出慣有的思維,利用 a , b進行置換。

主要是利用 + - 去進行運算,類似 a = a + ( b - a) 實際上等同於最後 的 a = b;

function swap(a , b)
數列長度限定在9.

斐波那契數列,又稱**分割數列,指的是這樣乙個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列主要考察遞迴的呼叫。我們一般都知道定義

fibo[i] = fibo[i-1]+fibo[i-2];
生成斐波那契陣列的方法

function getfibonacci(n) 

return maxprofit;

}

8、隨機生成指定長度的字串

實現乙個演算法,隨機生成指制定長度的字元竄。

比如:給定 長度 8 輸出 4ldkfg9j

function randomstring(n) 

return tmp;

}

9、實現類似getelementsbyclassname 的功能

自己實現乙個函式,查詢某個dom節點下面的包含某個class的所有dom節點?不允許使用原生提供的 getelementsbyclassname queryselectorall 等原生提供dom查詢函式。

function queryclassname(node, name) 

i += 1;

}return array;

}

10、使用js 實現二叉查詢樹(binary search tree)

一般叫全部寫完的概率比較少,但是重點考察你對它的理解和一些基本特點的實現。 二叉查詢樹,也稱二叉搜尋樹、有序二叉樹(英語:ordered binary tree)是指一棵空樹或者具有下列性質的二叉樹:

在寫的時候需要足夠理解二叉搜素樹的特點,需要先設定好每個節點的資料結構

class node 

}

樹是有節點構成,由根節點逐漸延生到各個子節點,因此它具備基本的結構就是具備乙個根節點,具備新增,查詢和刪除節點的方法.

class binarysearchtree 

insert(data)

let currentnode = this.root;

let parent = null;

while (1)

} else }}

} remove(data)

removenode(node, data)

if (data == node.data)

if (node.left == null)

if (node.right == null)

let getsmallest = function(node)

if(node.left != null)

if(node.right !== null)

}let temnode = getsmallest(node.right);

node.data = temnode.data;

node.right = this.removenode(temnode.right,temnode.data);

return node;

} else if (data < node.data) else

} find(data)

if (data < current.data) else

}return current.data;

}}module.exports = binarysearchtree;

JS演算法總結

1 選擇排序 var arr 3,6,7,2,6,4,1,6,8,24,12,53 function sort arr var min arr 0 index 0 for var i 0 i 刪除最小值 var prev arr.splice index,1 通過遞迴,將這一輪中的最小值合併下一輪的...

JS演算法總結

1 選擇排序 var arr 3,6,7,2,6,4,1,6,8,24,12,53 function sort arr var min arr 0 index 0 for var i 0 i 刪除最小值 var prev arr.splice index,1 通過遞迴,將這一輪中的最小值合併下一輪的...

常用JS總結1

js控制滾動條的位置 window.scrollto x,y 豎向滾動條置頂 window.scrollto 0,0 豎向滾動條置底 window.scrollto 0,document.body.scrollheight js控制textarea滾動條自動滾動到最下部 document.getel...