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

本文详细介绍了链表的数据结构及其反转算法的实现过程,同时探讨了如何使用JavaScript处理数据序列,包括快速排序算法的实现及一组数的特殊格式化处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值