js算法题/前端面经总结(一)

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)
发布了15 篇原创文章 · 获赞 21 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41531446/article/details/88087933