美团前端实习一面-处女面凉经0^0

面试时间:50min
职位:前端开发暑期实习

0、先自我介绍

1、手撕之前笔试写过的算法,做一个优化简单优化(x)

之前写过的算法题一定要去回顾,一定要去了解的很透彻(题目记录在下方)

2、React中setState是异步的么?(√)

3、post和get的区别 (√)

4、react的diff (√ ×)

5、为什么会跨域,如何解决(√)

6、js的基本数据类型(×,多嘴说了个bigInt)

7、如何判断一个变量是否是number类型(√ )

8、判断是不是数组(√ ×)

9、让clss="b"水平垂直居中有哪些方式手写一下(√ )

10.你知道哪些ES6的内容

面试官体验挺好的,人也很有意思。我面完问他你有没有什么建议给我,因为第一次参加面试嘛
他说都挺好的,基础知识还行,就是算法还需加强。不过也别太担心有的公司就不要求,有的公司就会要求,像我我就会问(细品)。

总结:挺好,美团面试体验不错面试官也很棒,就是个人太菜凉了…算法王道呀

优化题目:
题目描述

给出一个序列包含n个正整数的序列A,你可以从中删除若干个数,使得剩下的数字中的最大值和最小 值之差不超过x,请问最少删除多少个数字。

输入

输入第一行仅包含两个正整数n和x,表示给出的序列的长度和给定的正整数。(1<=n<=1000,1<=x<=10000)

接下来一行有n个正整数,即这个序列,中间用空格隔开。(1<=a_i<=10000)

输出

输出仅包含一个整数,表示最少删除的数字的数量。

题目限制

时间限制:C/C++语言 1000MS;其他语言 3000 MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

样例输入

5 2
2 1 3 2 5
样例输出

1
 /*优化解法*/
 function newFn(x,arr){
        let count =0;
        /*开局就做一个排序,取得最大值和最小值*/
        arr.sort((a,b)=>a-b);
        while (1){
            let max =arr[arr.length-1],
                min = arr[0];
            if (max-min<=x){
                return count
            }
            /*这种情况下可以出现从后取值和从前取值两种情况,两种都有比较极端的情况
          * 因此我们需要做一个差值来决定从哪一头来取值
          * */
            /*看和下一项那边差距大,我们优先删除掉差距大的那一项*/
            let subtractMax = arr[length-1] - arr[length-2];
            let subtractMin = arr[1] - arr[0];
           subtractMax>=subtractMin?arr.pop():arr.shift();
           count++
        }
       return  count
    }
发布了20 篇原创文章 · 获赞 9 · 访问量 3518

猜你喜欢

转载自blog.csdn.net/weixin_44956861/article/details/105393665