Hello,大家好,面试的过程中,作为程序员我们不可避免会遇到考算法题,对于我们算法薄弱的小伙伴一起开启数据结构算法之旅吧。
首先我们先培养对算法的信心,入门级别开始,一开始就挑战进阶级别难以坚持下去的。
面试中考到一个简单的算法题: NC283 数组中重复的数字
在牛客网线上编程上以下代码会执行通过:
function duplicate( numbers ) {
// write code here
let set = new Set();
for(let i=0;i<numbers.length;i++) {
if(set.has(numbers[i])) {
return numbers[i];
} else {
set.add(numbers[i])
}
}
return -1;
}
module.exports = {
duplicate : duplicate
};
示例1 输入: [2,3,1,0,2,5,3]
返回值: 2
说明: 2或3都是对
但是当我们自己真正js运行的师运行不成功的,那是因为,该题牛客网已经帮我们写好了控制台输入与输出,导致我们本地运行却不知道怎么运行成功,因此,为此我们来从练习js写算法的输入输出开始吧: 以下是可以本地输入输出调试成功的代码:
function duplicate( numbers ) {
//实例化set来存储非重复元素
const set=new Set();
for(let i=0;i<numbers.length;i++) {
//如果set存在numbers数组的元素则直接返回该元素结束for遍历
if(set.has(numbers[i])) {
return numbers[i];
}else{
//否则该添加numbers[i]添加在set中
set.add(numbers[i])
}
}
return -1
}
const rl=require('readline').createInterface({input:process.stdin})
var ter=rl[Symbol.asyncIterator]()
const readLine=async()=>(await ter.next()).value;
void async function(){
const inputLine=JSON.parse(await readLine());
console.log( duplicate(inputLine))
rl.close();
}()
执行结果看截图: