今天面试,考官给了一道算法题,有数组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 回答
慕桂英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
}
添加回答
举报
0/150
提交
取消