为了账号安全,请及时绑定邮箱和手机立即绑定

js 面试 算法题

js 面试 算法题

三国纷争 2018-08-03 17:19:24
今天面试,考官给了一道算法题,有数组1和数组2,这两个数组都是已经按照从大到小排好序的,然后求两个数组集合的中间数。给出的思路是:要从已排好顺序的数组1和数组2入手,只需要比较数组1和数组2的第一个元素,然后一直循环下去就可以了。然后我的思路就如下代码,但是最后的temp一直是undefined,打了断点也没看懂,有小伙伴能给解释下吗,谢谢啦        function test(arr1,arr2){            var arr=[];            while(arr1.length>0&&arr2.length>0){                if(arr1[0]>=arr2[0]){                    arr.push(arr1[0]);                    arr1.pop(arr1[0]);                }else if(arr1[0]<arr2[0]){                    arr.push(arr2[0]);                    arr2.pop(arr2[0]);                }            }            var temp;            if(arr1.length=0){                temp=arr.concat(arr2);            }            if(arr2.length=0){                temp=arr.concat(arr1);            }            return document.write(temp);        }
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

pop() 方法用于删除并返回数组的最后一个元素,应该是删除第一个元素吧。。。。 shift() 才对

查看完整回答
反对 回复 2018-08-05
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

function combine(a1, a2) {

    var a3 = []

    var i = 0

    var j = 0

    var k = 0


    while (i < a1.length && j < a2.length) {

        if (a1[i] > a2[j]) {

            a3[k] = a1[i]

            i++

            k++

        } else {

            a3[k] = a2[j]

            j++

            k++

        }

    }


    while (i<a1.length) {

        a3[k] = a1[i]

        i++

        k++

    }


    while (j<a2.length) {

        a3[k] = a2[j]

        j++

        k++

    }


    return a3

}


查看完整回答
反对 回复 2018-08-05
  • 3 回答
  • 0 关注
  • 1137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信