网易游戏2020研发笔试题

(1)大概是对一个序列中统计每个数的二进制的位数1个数,并对其按1的个数归类,输出总共有几类

#include<iostream>
#include<set>
#include<vector>
using namespace std;
int getCount(long& num){
    int cnt = 0;
    while(num){
        if(num&1)cnt++;
        num >>= 1;
    }
    return cnt;
}
int main(){
    int T;
    while(cin>>T){
        vector<int> res;
        for(int j = 0; j < T; j++){
            int n;
            cin>>n;
            set<int> ans;
            for(int i = 0; i < n; i++){
                long temp;
                cin>>temp;
                ans.insert(getCount(temp));
            }
            res.push_back(ans.size());
        }
        for(auto x : res)cout << x << endl; 
    }
    return 0;
}

(2)泳池蓄水,泳池容量m, 时间t, 每分进水m1容量, t1时间后由给水管切换开关状态, 每分钟排水m2, t2时间后排水管切换开关状态,求经过t分钟后有多少容量s的水,0 <= s <= m 。

int func(int &m, int &t, int &m1, int &t1, int &m2, int &t2){
    int sum = 0, cur = 0;
    bool jishui = true, paishui = true;
    int tm = m, tt = t, tm1 = m1, tt1 = t1, tm2 = m2, tt2 = t2;
    while(cur < tt){
        if(jishui&&paishui){
            sum += tm1 - tm2;
            if(sum >= tm) sum = tm;
            else if(sum <= 0) sum = 0;
        }else if(!jishui && paishui){
            sum -= tm2;
            if( sum <= 0)sum = 0;
        }else if(jishui && !paishui){
            sum += tm1;
            if( sum >= tm)sum = tm;
        }
        tt1--;
        if(tt1==0){
            if(jishui)jishui = false;
            else jishui = true;
            tt1 = t1;
        }
        tt2--;
        if(tt2==0){
            if(paishui)paishui = false;
            else paishui = true;
            tt2 = t2;
        }
        cur ++;
    }
    return sum;
}

(3)在一个只有大写字母的字符串,最多变换两个字符,使得字符变换后连续的”N“最长。

int func(string &s){
    vector<int> indexs;
    int len = s.length();
    for(int i = 0; i < len; i++)if(s[i] != 'N')indexs.push_back(i);
    if(indexs.size() <= 2)return len;
    int maxx = 0;
    for(int i = 0; i < indexs.size() - 1; i++){
        int l = indexs[i] - 1, r = indexs[i + 1] + 1;
        while(l>=0 && s[l] == 'N')l--;
        while(r < len && s[r] == 'N')r++;
        l++, r--;
        maxx = max(maxx, r - l + 1);
    }
    return maxx;
}

(4)给一个数组a代码发电站群,一个数组b代表洪水群,a[i]代表第i个发电站的海拔,b[i]代表第i次洪水高度,每次发洪水,a中每个数海拔小于等于b的,就要失联。两两相邻的话是一个群体,相邻关系可以传递。求最后失联群体数。(这题只过40%,浪费一个小时时间,看错题目意思,后面匆匆写了,时间复杂度没过,只有4分钟了。。。。。。)

#include<iostream>
#include<vector>
using namespace std;
int main(){
    int T;
    cin >> T;
    vector<long> a(T, -1);
    for(int i = 0; i < T; i++)
        cin >> a[i];
    int q;
    cin >> q;
    vector<int> res;
    for(int i = 0; i < q; i++){
        vector<int> temp(a.begin(), a.end());
        long qq;
        cin >> qq;
        for(int j = 0; j < T; j++)
            if(qq >= temp[j])temp[j] = -1;
        int cnt = 0, index = 0;
        while(index < T){
            if(temp[index]!=-1){
                cnt++;
                while(index < T && temp[index]!=-1)index++;
            }
            index++;
        }
        res.push_back(cnt);
    }
    for(auto x : res)cout << x << endl;
    return 0;
}

笔试完研究了一下这题,感觉在多了复制和循环,一旦T和q特别大的时候,就很耗时,作出下面的改进,不复制不赋值,时间复杂度在O(q*T),这样在时间上肯定是不会有问题的,如果有,可能也是边界条件,也就是第一个数和最后一个数可能做一下特殊处理,其实改动不大,只是看错题意,浪费了好多时间!!!

#include<iostream>
#include<vector>
using namespace std;
int main(){
    int T;
    cin >> T;
    vector<long> a(T, -1);
    for(int i = 0; i < T; i++)
        cin >> a[i];
    int q;
    cin >> q;
    vector<int> res;
    for(int i = 0; i < q; i++){
        long qq;
        cin >> qq;
        int cnt = 0, index = 0;
        while(index < T){
            if(a[index] > qq){
                cnt++;
                while(index < T && a[index] > qq)index++;
                index--;
            }
            index++;
        }
        res.push_back(cnt);
    }
    for(auto x : res)cout << x << endl;
    return 0;
}

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 网易数据分析师笔试是什么? 根据目描述来看,可能是一道针对数据分析领域的目,要求应聘者使用编程语言或数据分析工具进行数据处理、分析和可视化等操作。 笔试可能会考察应聘者对数据预处理、数据分析和数据可视化的能力。在这个过程中,应聘者需要运用统计学、数据挖掘、机器学习等相关方法,对原始数据进行清洗、探索和分析,最终得出有意义的结论。 在回答这个问时,可以从以下几个方面进行回答: 首先,应聘者可以介绍自己在数据分析领域的经验和能力。比如,自己是否具备数据分析相关的学历、培训或工作经验,擅长的编程语言、数据分析工具等。 其次,应聘者可以总结一下数据分析的过程。比如,数据预处理、特征选择、模型构建和评估等。 接着,应聘者可以谈谈自己在数据分析过程中常用的编程语言与工具,比如Python语言和数据分析工具如Pandas、NumPy和Scikit-learn等。 然后,应聘者可以详细描述一下自己在数据预处理、数据分析和数据可视化方面的经验。可以通过举例子,介绍一些在实际项目中采用的方法和技巧。 最后,应聘者可以简要说明一下自己未来在数据分析领域的规划和目标,比如希望深入学习机器学习算法或者数据可视化技术等。 通过以上的回答,可以展示出自己对数据分析领域的了解和热情,同时也能体现出自己的能力和潜力。 ### 回答2: CSDN是中国最大的IT技术专业社区,汇聚了众多的软件开发者、数据分析师、系统架构师等技术人员。网易作为中国的著名互联网公司之一,与CSDN合作也非常频繁。 网易数据分析师笔试是指网易针对数据分析师岗位候选人举行的笔试。此笔试主要考察应聘者在数据处理、统计分析、数据报告撰写等方面的能力。 笔试中可能包含以下内容: 1. 数据处理:要求应聘者掌握数据清洗、数据整合等技巧,能够合理地对大量的数据进行加工与整理。 2. 统计分析:要求应聘者具备一定的统计学基础,能够使用统计学方法进行数据分析,包括描述性统计、推断统计等。 3. 数据建模:要求应聘者能够基于已有数据进行建模分析,深入挖掘数据背后的规律和信息。 4. 数据报告撰写:要求应聘者能够将分析结果清晰地呈现出来,撰写具有合理结构和逻辑性的数据报告。 对于参加网易数据分析师笔试的候选人来说,最重要的是要具备良好的基础知识和实际操作能力。此外,还需培养自己的逻辑思维和问解决能力。对于CSDN网站的应聘者来说,他们可以通过学习和参与网站上的技术讨论、项目实践等方式,不断提升自己的技术水平和经验。 总之,网易数据分析师笔试是对应聘者数据分析能力和技术实力的考核,候选人需要在学习基础知识的基础上,进行实际操作训练,并通过各种途径积累经验,提升自己的能力。 ### 回答3: CSDN是中国领先的IT技术社区,致力于推动技术行业的发展和传播,为广大开发者提供学习、交流和分享的平台。而网易是中国领先的综合互联网技术公司,拥有丰富的数据资源和庞大的用户群体。 作为网易数据分析师,笔试可能涉及数据分析的基本概念、数据处理技术和数据挖掘方法等方面。在这道中,我会将网易作为数据分析的对象进行分析。 首先,作为一家综合性互联网公司,网易拥有大量的用户行为数据、产品销售数据和广告投放数据等等。数据分析师可以通过对这些数据的收集、整理和分析,帮助网易公司了解用户的偏好、产品的销售情况以及广告投放的效果。通过对这些数据的深入挖掘和分析,可以为网易提供决策支持和业务优化的建议。 其次,数据分析师可以利用数据分析工具和技术,对网易的业务进行更细致的划分和评估。例如,可以通过用户分群和用户画像的方法,对不同用户群体的行为和偏好进行分析,从而为网易提供个性化推荐和精准广告投放。此外,数据分析师还可以使用数据挖掘和机器学习的方法,寻找隐藏在数据背后的规律和模式,进一步提升网易的产品和服务。 最后,数据分析师需要具备良好的数据分析能力和业务理解能力。同时,也需要具备较强的沟通能力,能够将复杂的数据分析结果以简明的方式传达给相关部门和决策者。通过有效的沟通和交流,可以促进数据驱动的决策,提高网易的竞争力和市场地位。 综上所述,作为网易数据分析师,需要从数据收集、整理和分析的角度,为网易提供决策支持和业务优化的建议。通过数据分析工具和技术,对网易的业务进行更细致的划分和评估。同时,也需要具备良好的数据分析能力和业务理解能力,并具备较强的沟通能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值