编写了一个"PrintZigZag“程序,它提供了一个包含任何值的10个整数数组,并按以下顺序打印元素:第一个--最后一个,第二个--最后一个,等等.(程序的编写必须假装不知道在数组中输入的值是什么)
这是一个“初级网络开发者”的面试问题,我不知道如何解决.
let numbers = [1,2,3,4,5,6,7,8,9,10];
发布于 2020-11-11 20:33:49
这就是你要找的结果?
[1, 10, 2, 9, 3, 8, 4, 7, 5, 6]
我真的很喜欢面试问题,谢谢你的分享。请让我解释一下我在这里做什么
let numbers = [1,2,3,4,5,6,7,8,9,10];
var result = [];
for(i=1; i< numbers.length+1 /2; i++) {
result.push(i);
result.push(numbers.pop());
}
我从1开始循环超过一半的数组,然后将第一个索引推到结果数组上,然后在我弹出数组的最后一个数之后直接打开。
这将建立一个由第一个数和最后一个数组成的新数组,最终到达终点。
发布于 2020-11-11 21:27:42
这里是使用.map的甜寒费城的解决方案。面试官可能希望看到你使用for循环,但是了解现代循环也会有帮助。
let arr = [];
numbers.map(item => {
arr.push(item);
arr.push(numbers[numbers.length - 1])
numbers.pop()
})
这是一个有do的解决方案,就像Peter S提到的循环一样。小心这些,因为如果不能正确地转义,它们可能会以无限循环结束。
let arr = [];
do {
arr.push(numbers[0])
arr.push(numbers[numbers.length - 1])
numbers.shift()
numbers.pop()
} while (numbers.length > 0)
https://stackoverflow.com/questions/64793421
复制相似问题