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...