当前位置: 首页 > 面试经验 >

米哈游前端笔试4.15(第二批)

优质
小牛编辑
88浏览
2023-04-23

米哈游前端笔试4.15(第二批)

范围合适,围绕前端,数据结构,操作系统的关键知识点

选择

哈夫曼编码

关键路径

进程线程

栈顶指针

...考太久了忘记了还有啥

编程

只可以采用Javascript(Node)

求和最小

一个数(偶数位),从哪里劈开,两侧的和最小

情况A:从中间分开,得到的和最小,因为两边此时位数最接近

情况B:从中间前/后一位分开,位数必然比A多,

虽然A可能会向前进位和B位数一样多,但是A依旧比B小

综上选用A做就可以了

冰火消除

I 和F相互抵消(I ice,F fire)冰花骗骗花互相发生反应,其存在的原来位置变成'.'

先标记,再清除即可,不能边遍历边处理,会影响后面的,注意消除是上下左右都可以,连带消除

输入:

3 4

FIF.

.FIF

.FFI

输出:

....

....

.F..

emmm思路应该没错,不知道为什么不通过,如有佬耐心看的话,还请指教,如想看正确的在下面题解链接里

function judge(n,m,i,j,arr=[]){
    let exp=/IF/;    
    let exp1=/FI/;

    if(i>0){//上
        if(exp.test(arr[i-1][j]+arr[i][j])||exp1.test(arr[i-1][j]+arr[i][j])){
            return true;
        }
    }
    if(i<n-1){//下
        if(exp.test(arr[i+1][j]+arr[i][j])||exp1.test(arr[i+1][j]+arr[i][j])){
            return true;
        }
    }
    if(j>0){//左
        if(exp.test(arr[i][j]+arr[i][j-1])||exp1.test(arr[i][j]+arr[i][j-1])){
            return true;
        }
    }
    if(j<m-1){//右
        if(exp.test(arr[i][j]+arr[i][j+1])||exp1.test(arr[i][j]+arr[i][j+1])){
            return true;
        }
    }
    return false;
}
function fun(arr=[]){//arr:[n+1,m]
    let n=arr[0][0],m=arr[0][1];//n行,m列
    let res=[];

    for(let i=1;i<=n;i++){
        // console.log(arr[i][0].split(''))
        res.push(arr[i][0].split(''));
    }


    for(let i=0;i<n;i++){
        for(let j=0;j<m;j++){
            if(judge(n,m,i,j,res)){
                res[i][j]='D';
            }
        }
    }
    for(let i=0;i<n;i++){
        for(let j=0;j<m;j++){
            if(res[i][j]==='D'){
                // res[i].replace('D','.')
                res[i][j]='.';
            }
        }
        console.log(res[i]);
    }

}
let arr=[];
arr.push(['3','4'])
arr.push(['FIF.'])
arr.push(['...I'])
arr.push(['.F.I'])
fun(arr)

组合

以下题解来自4.15米哈游前端笔试-算法题部分-通俗易懂题解

假定有一个数组ai i>=0,i<n;bi=ai + ai-1 我们知道全部的bi,请问ai有多少种可能的组合 n 1e5,bi 1e9

先写出前几项,找规律,若我们假定第一项是x,那么所有的ai都可以用b和x表示,因此我们需要让所有的ai大于0都成立,转化为了一系列关于x的方程组,均大于0;

那么多写几项有没有规律呢,有的,除了x的剩下部分,也就是前面的全b的部分挺相似的。即所有的奇数项,偶数项成等差数列;注意起始项不同,且奇数是-x,偶数是+ x

可能输出负数,要跟0求一下max

#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pii;
typedef long long ll;
#define rep(i, start, end) for (int i = start; i <= end; i++)
#define lop(i, start, end) for (int i = start; i >= end; i--)
int main() {
    ios_base::sync_with_stdio(0);
    // freopen("t.in", "r", stdin);
    // 数学?
    int n;
    cin >> n;
    vector<ll> b(n), t(n);
    rep(i, 0, n - 2) {
        cin >> b[i];
    }
    t[1] = b[0], t[2] = b[1] - b[0];
    ll up = LONG_LONG_MAX, down = LONG_LONG_MIN;
    for (int i = 3; i <= n; i += 2) {
        t[i] = b[i - 1] - b[i - 2] + t[i - 2];
    }
    for (int i = 4; i <= n; i += 2) {
        t[i] = b[i - 1] - b[i - 2] + t[i - 2];
    }

    for (int i = 1; i < n; i += 2) {
        up = min(up, t[i]);
    }
    for (int i = 2; i < n; i += 2) {
        down = max(down, -t[i]);
    }
    if (down < 0) {
        down = 0;
    }
    cout << up - down - 1;
    return 0;
}


2023年最全前端面试(20w字)HTML5+CSS3+JS+TS4+Vue3+React18+八股文+手写+项目+笔试 涵盖了大部分知识点,部分目录展示

#软件开发2023笔面经##米哈游##前端##笔试##实习#
 类似资料: