今天面了一家做笔记的厂,是手写代码面,第一个题就是奇偶排序的问题,题目如下
input: [2,1,5,7,4,9,8,5,6] output: [1,5,7,9,5,2,4,8,6]
输入一个整数数组,期望输出的数组里,奇数在前边,偶数在后边
我想这不简单么,我有好几种办法可以实现这个功能,然后我就写下了如下代码
function filter(originArray) {
let oddArray = [];
let evenArray = [];
originArray.forEach(item => {
if (item % 2 == 1) {
oddArray.push(item);
}
else {
evenArray.push(item);
}
})
return oddArray.concat(evenArray);
}
其实我还有以下办法可以实现
function filter(originArray) {
originArray.sort((a, b) => {
return b % 2 - a % 2;
})
return originArray;
}
function filter(originArray) {
return originArray.filter(a => {
return a % 2 == 1;
}).concat(originArray.filter(b => {
return b % 2 == 0;
}));
}
但是我没想到,面试官其实是想考察双指针排序的变种,我对这种双指针得问题本来就不熟,就卡在这问题上搞了 20 来分钟,整得我都没脾气了,汗都整出来了,后面又考察了一个问题,我只知道原理,让我手写又一次写错,就尴尬地结束了这一次面试。
可能刚好对方的实际项目中需要解决这类算法的问题,面试没面好是我的问题,
我想说的是,对于一个问题,没能按面试官想的方式解决,是不是就算活不好了?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.