1.實現鏈表的反轉
(function (){
var node3 = {
name:'obj3',
next:null
}
var node2 = {
name:'obj2',
next:obj3
}
var node1 = {
name:'obj1',
next:obj2
}
function print(node){
var p = node;
while(p){
console.log(p.name)
p = p.next;
}
}
function reverse(nodeList){
var pnode=NodeList,
pre=null,//用來儲存上一個節點,初始爲null
next//用來存放下一個節點
while(pnode){
next=pnode.next//獲得下一個節點
pnode.next=pre//當前節點next指向上一個節點
pre=pnode//設置上一個節點爲當前節點
pnode=next//設置當前節點爲下一個節點
}
return pre
}
print(reverse(node1));
})();
2.(百詞斬前端筆試題)給定一組數,其中三個以上的相鄰的數用-連接,其餘的用空格分隔,例如:
輸入:1,2,3,4,6,7,9,10,11
輸出:1-4 6 7 9-11
var s='1 2 3 4 6 7 9 10 11'
var find=function(s) {
var arr=s.split(' ')
var str=''//存放結果
var l=arr.length
var c_arr=[]
for(i=0;i<l;i++){
c_arr.push(arr[i])
if(+arr[i]+1!==+arr[i+1]){//這裏注意用加號轉爲數字
if(c_arr.length>=3){
str=str+c_arr[0]+'-'+c_arr[c_arr.length-1]+' '
}else{
str=str+c_arr.join(' ')+' '
}
c_arr=[]
}
}
return str.substr(0,str.length-1)//去掉最後一個空格
}
console.log(find(s))
3.JS實現快速排序算法
var quickSort=function(arr){
function swap(arr,i,j){
[arr[i],arr[j]]=[arr[j],arr[i]]//利用es6新語法
}
function partition(arr,l,r){
var i=l,j=r-1,pivot=arr[r-1]//以最後一個元素爲基準
while(i!==j){
arr[i]<=pivot?i++:swap(arr,i,--j)//從左邊開始,若小於基準則繼續往右,若大於基準則交換i,j,j往左走,繼續判斷位置
}
swap(arr,j,r-1)//最後將基準放到ij相等的位置
return j//返回基準此時的位置
}
function qsort(arr,l=0,r=arr.length){
if(r-l<=1)return
const m=partition(arr,l,r)//獲得基準位置
qsort(arr,l,m)//遞歸排序
qsort(arr,m+1,r)
}
qsort(arr)
}
var arr=[1,4,-1,6,2,-8]
quickSort(arr)
console.log(arr)