如何培养数据结构算法兴趣之旅-day1

44 阅读2分钟

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();
}()

执行结果看截图:

image.png

image.png